package app4mc.example.transform.m2t.cust.transformers

import org.eclipse.app4mc.amalthea.model.Amalthea
import org.osgi.service.component.annotations.Component
import app4mc.example.transform.m2t.transformers.M2T_Output_Transformer

@Component(
	property=#["service.ranking:Integer=10"],
	service=M2T_Output_Transformer
)
class CustTransformer extends M2T_Output_Transformer {
	/**
	 * Creates output with a "template only" style (like Xpand/Xtend).
	 */
	override String generateOutput1(Amalthea amalthea) '''
		Customer template
		«super.generateOutput1(amalthea)»
	'''

	/**
	 * Creates output with a combination of template and functions.
	 * This allows a more flexible use of utility functions and lambdas.
	 */
	override String generateOutput2(Amalthea amalthea) '''
		Customer template
		 «super.generateOutput2(amalthea)»
	'''

}
