package railo.transformer.cfml.script;
import railo.runtime.exp.TemplateException;
import railo.transformer.bytecode.Page;
import railo.transformer.bytecode.expression.Expression;
import railo.transformer.bytecode.statement.tag.Tag;
import railo.transformer.cfml.TransfomerSettings;
import railo.transformer.cfml.evaluator.EvaluatorPool;
import railo.transformer.cfml.tag.CFMLTransformer;
import railo.transformer.cfml.tag.TagDependentBodyTransformer;
import railo.transformer.library.function.FunctionLib;
import railo.transformer.library.tag.TagLibTag;
import railo.transformer.util.CFMLString;
public class CFMLScriptTransformer extends AbstrCFMLScriptTransformer implements TagDependentBodyTransformer {
/**
* Einstiegsmethode fuer den CFScript Transformer,
* die Methode erbt sich von der Transform Methode der data.cfmlExprTransformer Klasse.
* Der einzige Unterschied liegt darin, das der data.cfmlString der eingegeben wird als vererbte Klasse CFScriptString vorliegen muss.
* Der Parameter ist als data.cfmlString definiert, so dass er die transform Methode ueberschreibt.
* @param fld Array von Function Libraries,
* Mithilfe dieser Function Libraries kann der Transfomer buil-in Funktionen innerhalb des data.cfml Codes erkennen
* und validieren.
* <br />
* EBNF:<br />
* <code>statements;</code>
* @param cfxdTag XML Document des aktuellen zu erstellenden CFXD
* @param libTag Definition des aktuellen Tag.
* @param data.cfml data.cfml Code
* @param parentTransformer
* @throws TemplateException
*/
public void transform(Page page,CFMLTransformer parentTransformer,EvaluatorPool ep,FunctionLib[] fld, Tag tag,TagLibTag libTag,TagLibTag[] scriptTags, CFMLString cfml,TransfomerSettings settings) throws TemplateException {
//Page page = ASMUtil.getAncestorPage(tag);
boolean isCFC= page.isComponent();
boolean isInterface= page.isInterface();
ExprData data = init(page,ep,fld,scriptTags,cfml,settings,true);
data.insideFunction=false;
data.tagName=libTag.getFullName();
data.isCFC=isCFC;
data.isInterface=isInterface;
//data.scriptTags=((ConfigImpl) config).getCoreTagLib().getScriptTags();
tag.setBody(statements(data));
}
/**
* @see railo.transformer.data.cfml.expression.data.cfmlExprTransformer#expression()
*/
public final Expression expression(ExprData data) throws TemplateException {
Expression expr;
expr = super.expression(data);
comments(data);
return expr;
}
}