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    }