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