package railo.transformer.cfml.expression; import railo.runtime.exp.TemplateException; import railo.transformer.bytecode.Page; import railo.transformer.bytecode.expression.Expression; import railo.transformer.cfml.ExprTransformer; import railo.transformer.cfml.TransfomerSettings; import railo.transformer.cfml.evaluator.EvaluatorPool; import railo.transformer.cfml.script.AbstrCFMLScriptTransformer; import railo.transformer.library.function.FunctionLib; import railo.transformer.library.tag.TagLibTag; import railo.transformer.util.CFMLString; public class CFMLExprTransformer extends AbstrCFMLScriptTransformer implements ExprTransformer { /** * @see railo.transformer.data.cfml.ExprTransformer#transformAsString(railo.transformer.library.function.FunctionLib[], org.w3c.dom.Document, railo.transformer.util.CFMLString) */ public Expression transformAsString(Page page,EvaluatorPool ep,FunctionLib[] fld,TagLibTag[] scriptTags, CFMLString cfml, TransfomerSettings settings, boolean allowLowerThan) throws TemplateException { return transformAsString(init(page,ep,fld,scriptTags, cfml,settings,allowLowerThan),new String[]{" ", ">", "/>"}); } /** * Wird aufgerufen um aus dem bergebenen CFMLString einen Ausdruck auszulesen * und diesen in ein CFXD Element zu bersetzten. * <br /> * Beispiel eines bergebenen String:<br /> * <code>session.firstName</code> oder <code>trim(left('test'&var1,3))</code> * <br /> * EBNF:<br /> * <code>spaces impOp;</code> * * @param fld Array von Function Libraries, * Mithilfe dieser Function Libraries kann der Transfomer buil-in Funktionen innerhalb des CFML Codes erkennen * und validieren. * @param doc XML Document des aktuellen zu erstellenden CFXD * @param cfml Text der transfomiert werden soll. * @return Element CFXD Element * @throws TemplateException */ public Expression transform(Page page,EvaluatorPool ep,FunctionLib[] fld,TagLibTag[] scriptTags, CFMLString cfml, TransfomerSettings settings) throws TemplateException { ExprData data = init(page,ep,fld,scriptTags, cfml,settings,false); comments(data); return assignOp(data); } }