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    }