001 package railo.transformer.cfml; 002 003 import railo.runtime.exp.TemplateException; 004 import railo.transformer.bytecode.expression.Expression; 005 import railo.transformer.cfml.evaluator.EvaluatorPool; 006 import railo.transformer.library.function.FunctionLib; 007 import railo.transformer.util.CFMLString; 008 009 /** 010 * Innerhalb einer TLD (Tag Library Descriptor) kann eine Klasse angemeldet werden, 011 * welche das Interface ExprTransfomer implementiert, 012 * um Ausdr�cke die innerhalb von Attributen und dem Body von Tags vorkommen zu transformieren. 013 * Die Idee dieses Interface ist es die M�glichkeit zu bieten, 014 * weitere ExprTransfomer zu erstellen zu k�nnen, 015 * um f�r verschiedene TLD, verschiedene Ausdrucksarten zu bieten. 016 * 017 */ 018 public interface ExprTransformer { 019 020 /** 021 * Wird aufgerufen um aus dem �bergebenen CFMLString einen Ausdruck auszulesen 022 * und diesen in ein CFXD Element zu �bersetzten. 023 * <br> 024 * Beispiel eines �bergebenen String:<br> 025 * "session.firstName" oder "trim(left('test'&var1,3))" 026 * 027 * @param fld Array von Function Libraries, 028 * Mithilfe dieser Function Libraries kann der Transfomer buil-in Funktionen innerhalb des CFML Codes erkennen 029 * und validieren. 030 * @param doc XML Document des aktuellen zu erstellenden CFXD 031 * @param cfml Text der transfomiert werden soll. 032 * @return Element CFXD Element 033 * @throws railo.runtime.exp.TemplateException 034 * @throws TemplateException 035 */ 036 public Expression transform(EvaluatorPool ep,FunctionLib[] fld,CFMLString cfml) throws TemplateException; 037 038 /** 039 * Wird aufgerufen um aus dem �bergebenen CFMLString einen Ausdruck auszulesen 040 * und diesen in ein CFXD Element zu �bersetzten. Es wird aber davon ausgegangen das es sich um einen String handelt. 041 * <br> 042 * Beispiel eines �bergebenen String:<br> 043 * "session.firstName" oder "trim(left('test'&var1,3))" 044 * 045 * @param fld Array von Function Libraries, 046 * Mithilfe dieser Function Libraries kann der Transfomer buil-in Funktionen innerhalb des CFML Codes erkennen 047 * und validieren. 048 * @param doc XML Document des aktuellen zu erstellenden CFXD 049 * @param cfml Text der transfomiert werden soll. 050 * @return Element CFXD Element 051 * @throws TemplateException 052 */ 053 public Expression transformAsString(EvaluatorPool ep,FunctionLib[] fld,CFMLString cfml, boolean allowLowerThan) throws TemplateException; 054 }