001 package railo.transformer.cfml.script; 002 003 import railo.runtime.exp.TemplateException; 004 import railo.transformer.bytecode.Page; 005 import railo.transformer.bytecode.expression.Expression; 006 import railo.transformer.bytecode.statement.tag.Tag; 007 import railo.transformer.cfml.TransfomerSettings; 008 import railo.transformer.cfml.evaluator.EvaluatorPool; 009 import railo.transformer.cfml.tag.CFMLTransformer; 010 import railo.transformer.cfml.tag.TagDependentBodyTransformer; 011 import railo.transformer.library.function.FunctionLib; 012 import railo.transformer.library.tag.TagLibTag; 013 import railo.transformer.util.CFMLString; 014 015 public class CFMLScriptTransformer extends AbstrCFMLScriptTransformer implements TagDependentBodyTransformer { 016 /** 017 * Einstiegsmethode fuer den CFScript Transformer, 018 * die Methode erbt sich von der Transform Methode der data.cfmlExprTransformer Klasse. 019 * Der einzige Unterschied liegt darin, das der data.cfmlString der eingegeben wird als vererbte Klasse CFScriptString vorliegen muss. 020 * Der Parameter ist als data.cfmlString definiert, so dass er die transform Methode ueberschreibt. 021 * @param fld Array von Function Libraries, 022 * Mithilfe dieser Function Libraries kann der Transfomer buil-in Funktionen innerhalb des data.cfml Codes erkennen 023 * und validieren. 024 * <br /> 025 * EBNF:<br /> 026 * <code>statements;</code> 027 * @param cfxdTag XML Document des aktuellen zu erstellenden CFXD 028 * @param libTag Definition des aktuellen Tag. 029 * @param data.cfml data.cfml Code 030 * @param parentTransformer 031 * @throws TemplateException 032 */ 033 public void transform(Page page,CFMLTransformer parentTransformer,EvaluatorPool ep,FunctionLib[] fld, Tag tag,TagLibTag libTag,TagLibTag[] scriptTags, CFMLString cfml,TransfomerSettings settings) throws TemplateException { 034 //Page page = ASMUtil.getAncestorPage(tag); 035 boolean isCFC= page.isComponent(); 036 boolean isInterface= page.isInterface(); 037 038 Data data = init(page,ep,fld,scriptTags,cfml,settings,true); 039 data.insideFunction=false; 040 data.tagName=libTag.getFullName(); 041 data.isCFC=isCFC; 042 data.isInterface=isInterface; 043 //data.scriptTags=((ConfigImpl) config).getCoreTagLib().getScriptTags(); 044 045 tag.setBody(statements(data)); 046 } 047 048 /** 049 * @see railo.transformer.data.cfml.expression.data.cfmlExprTransformer#expression() 050 */ 051 public final Expression expression(Data data) throws TemplateException { 052 Expression expr; 053 expr = super.expression(data); 054 comments(data); 055 return expr; 056 } 057 }