001 package railo.transformer.cfml.expression; 002 003 import railo.runtime.exp.TemplateException; 004 import railo.transformer.bytecode.Page; 005 import railo.transformer.bytecode.expression.Expression; 006 import railo.transformer.cfml.ExprTransformer; 007 import railo.transformer.cfml.TransfomerSettings; 008 import railo.transformer.cfml.evaluator.EvaluatorPool; 009 import railo.transformer.cfml.script.AbstrCFMLScriptTransformer; 010 import railo.transformer.library.function.FunctionLib; 011 import railo.transformer.library.tag.TagLibTag; 012 import railo.transformer.util.CFMLString; 013 014 public class CFMLExprTransformer extends AbstrCFMLScriptTransformer implements ExprTransformer { 015 016 /** 017 * @see railo.transformer.data.cfml.ExprTransformer#transformAsString(railo.transformer.library.function.FunctionLib[], org.w3c.dom.Document, railo.transformer.util.CFMLString) 018 */ 019 public Expression transformAsString(Page page,EvaluatorPool ep,FunctionLib[] fld,TagLibTag[] scriptTags, CFMLString cfml, TransfomerSettings settings, boolean allowLowerThan) throws TemplateException { 020 return transformAsString(init(page,ep,fld,scriptTags, cfml,settings,allowLowerThan),new String[]{" ", ">", "/>"}); 021 } 022 023 024 /** 025 * Wird aufgerufen um aus dem bergebenen CFMLString einen Ausdruck auszulesen 026 * und diesen in ein CFXD Element zu bersetzten. 027 * <br /> 028 * Beispiel eines bergebenen String:<br /> 029 * <code>session.firstName</code> oder <code>trim(left('test'&var1,3))</code> 030 * <br /> 031 * EBNF:<br /> 032 * <code>spaces impOp;</code> 033 * 034 * @param fld Array von Function Libraries, 035 * Mithilfe dieser Function Libraries kann der Transfomer buil-in Funktionen innerhalb des CFML Codes erkennen 036 * und validieren. 037 * @param doc XML Document des aktuellen zu erstellenden CFXD 038 * @param cfml Text der transfomiert werden soll. 039 * @return Element CFXD Element 040 * @throws TemplateException 041 */ 042 public Expression transform(Page page,EvaluatorPool ep,FunctionLib[] fld,TagLibTag[] scriptTags, CFMLString cfml, TransfomerSettings settings) throws TemplateException { 043 Data data = init(page,ep,fld,scriptTags, cfml,settings,false); 044 comments(data); 045 return assignOp(data); 046 } 047 048 }