001/** 002 * 003 * Copyright (c) 2014, the Railo Company Ltd. All rights reserved. 004 * 005 * This library is free software; you can redistribute it and/or 006 * modify it under the terms of the GNU Lesser General Public 007 * License as published by the Free Software Foundation; either 008 * version 2.1 of the License, or (at your option) any later version. 009 * 010 * This library is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 013 * Lesser General Public License for more details. 014 * 015 * You should have received a copy of the GNU Lesser General Public 016 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 017 * 018 **/ 019package lucee.transformer.cfml; 020 021import lucee.runtime.exp.TemplateException; 022import lucee.transformer.bytecode.Page; 023import lucee.transformer.bytecode.expression.Expression; 024import lucee.transformer.cfml.evaluator.EvaluatorPool; 025import lucee.transformer.library.function.FunctionLib; 026import lucee.transformer.library.tag.TagLib; 027import lucee.transformer.library.tag.TagLibTag; 028import lucee.transformer.util.CFMLString; 029 030/** 031 * Innerhalb einer TLD (Tag Library Descriptor) kann eine Klasse angemeldet werden, 032 * welche das Interface ExprTransfomer implementiert, 033 * um Ausdruecke die innerhalb von Attributen und dem Body von Tags vorkommen zu transformieren. 034 * Die Idee dieses Interface ist es die Moeglichkeit zu bieten, 035 * weitere ExprTransfomer zu erstellen zu koennen, 036 * um fuer verschiedene TLD, verschiedene Ausdrucksarten zu bieten. 037 * 038 */ 039public interface ExprTransformer { 040 041 /** 042 * Wird aufgerufen um aus dem uebergebenen CFMLString einen Ausdruck auszulesen 043 * und diesen in ein CFXD Element zu uebersetzten. 044 * <br> 045 * Beispiel eines uebergebenen String:<br> 046 * "session.firstName" oder "trim(left('test'&var1,3))" 047 * 048 * @param fld Array von Function Libraries, 049 * Mithilfe dieser Function Libraries kann der Transfomer buil-in Funktionen innerhalb des CFML Codes erkennen 050 * und validieren. 051 * @param doc XML Document des aktuellen zu erstellenden CFXD 052 * @param cfml Text der transfomiert werden soll. 053 * @return Element CFXD Element 054 * @throws lucee.runtime.exp.TemplateException 055 * @throws TemplateException 056 */ 057 public Expression transform(Page page,EvaluatorPool ep,TagLib[][] tld, FunctionLib[] fld,TagLibTag[] scriptTags,CFMLString cfml, TransfomerSettings settings) throws TemplateException; 058 059 /** 060 * Wird aufgerufen um aus dem uebergebenen CFMLString einen Ausdruck auszulesen 061 * und diesen in ein CFXD Element zu uebersetzten. Es wird aber davon ausgegangen das es sich um einen String handelt. 062 * <br> 063 * Beispiel eines uebergebenen String:<br> 064 * "session.firstName" oder "trim(left('test'&var1,3))" 065 * 066 * @param fld Array von Function Libraries, 067 * Mithilfe dieser Function Libraries kann der Transfomer buil-in Funktionen innerhalb des CFML Codes erkennen 068 * und validieren. 069 * @param doc XML Document des aktuellen zu erstellenden CFXD 070 * @param cfml Text der transfomiert werden soll. 071 * @return Element CFXD Element 072 * @throws TemplateException 073 */ 074 public Expression transformAsString(Page page,EvaluatorPool ep,TagLib[][] tld, FunctionLib[] fld,TagLibTag[] scriptTags,CFMLString cfml, TransfomerSettings settings,boolean allowLowerThan) throws TemplateException; 075}