railo.transformer.cfml.tag
Class CFMLTransformer

java.lang.Object
  extended by railo.transformer.cfml.tag.CFMLTransformer

public final class CFMLTransformer
extends Object

Die Klasse CFMLTransformer ist das Herzstck des ᅵbersetzungsprozess, es liest die bergebene CFML Datei ein und bersetzt diese in ein valid (CFXD) XML Dokument in der Form eines org.w3c.dom.Document Object, die dann als weitere Vorlage zum bersetzten in PHP dient. Der CFMLTransformer bersetzt nur die Tags die innerhalb einer CFML Seite vorkommen, nicht die Ausdrcke die innerhalb von Attributen und dem Body eines Tag vorkommen k￶nnen, fr dies ist der ExprTransformer zust¦ndig, der in der jeweiligen Tag Library definiert ist. Der CFMLTransformer kann zwar durch seine Grammatik, Tags erkennen aber nicht validieren. Erst mithilfe der im zugeteilten Tag Libraries kann er vergleichen ob ein Tag nur ein normaler HTML Tag ist, das er einfach als literale Zeichenkette aufnimmt, oder ob es sich um einen Tag handelt der eine konkrete Anweisung implementiert. Die Tag Library definiert alle in CFML vorhanden Tags, deren individuelle Grammatik und deren Aufbau und Verhalten.

                Parser Grammatik nach EBNF (Extended Backus-Naur Form) 

                transform       = {body}
                body            = [comment] (""} "--->";
                literal         = ("<" | {?-"#"-"<"} "<" | {"#" expression "#"} "<" ) | ({?-"<"} "<")
                                  (* Welcher Teil der "oder" Bedingung ausgefhrt wird, ist abh¦ngig was die Tag-Lib vorgibt, 
                                     dass Expression geparst werden sollen oder nicht. *)
                tag             = name-space identifier spaces attributes ("/>" | ">" [body ""]);
                                  (* Ob dem Tag ein Body und ein End-Tag folgt ist abh¦ngig von Definition des body-content in Tag-Lib, gleices gilt fr appendix *)
                name-space      = < tagLib[].getNameSpaceAndSeperator() >;
                                  (* Vergleicht Zeichen mit den Namespacedefinitionen der Tag Libraries. *)
                attributes      = ({spaces attribute} "/>" | {spaces attribute} ">") | attribute-value;
                                  (* Welcher Teil der "oder" Bedingung ausgefhrt wird, ist abh¦ngig von der Tag Attribute Definition in der Tag Lib. *)
                attribute       = attribute-name  spaces "=" spaces attribute-value;
                attribute-name  = ("expression"|'expression'|expression) | identifier;
                                  (* Ruft identifier oder den Expression Transformer auf je nach Attribute Definition in der Tag Lib. *)
                attribute-value = expression; 
                identifier      = (letter | "_") {letter | "_"|digit};
                letter                  = "a".."z"|"A".."Z";
                digit                   = "0".."9";
                expression      = ; (* Ruft den Expression Transformer auf. *)
                spaces         = {space};
                space          = "\s"|"\t"|"\f"|"\t"|"\n";

                {"x"}= 0 bis n mal "x"
                ["x"]= 0 bis 1 mal "x"
                ("x" | "y")"z" = "xz" oder "yz"


Nested Class Summary
 class CFMLTransformer.Data
           
 
Field Summary
static short TAG_LIB_GLOBAL
           
static short TAG_LIB_PAGE
           
 
Constructor Summary
CFMLTransformer()
           
 
Method Summary
static void attributes(CFMLTransformer.Data data, TagLibTag tag, Tag parent)
          Liest die Attribute eines Tags ein, dies Abh¦ngig von der Definition innerhalb der Tag-Lib.
static Expression attributeValue(CFMLTransformer.Data data, TagLibTag tag, String type, boolean parseExpression, boolean isNonName, Expression noExpression)
          Liest den Wert eines Attribut, mithilfe des innerhalb der Tag-Lib definierten Expression Transformer, ein.
static boolean comment(CFMLString cfml)
           
static void comment(CFMLString cfml, boolean removeSpace)
          Liest einen Kommentar ein, Kommentare werden nicht in die CFXD bertragen sondern verworfen.
static TemplateException createTemplateException(CFMLString cfml, String msg, String detail, TagLibTag tag)
           
static TemplateException createTemplateException(CFMLString cfml, String msg, TagLibTag tag)
           
static TagLibTag getTLT(CFMLString cfml, String name)
           
static String identifier(CFMLString cfml, boolean throwError)
          Liest einen Identifier ein und gibt diesen als String zurck.
static ApplicationException setAddional(ApplicationException ae, TagLibTag tlt)
           
static TemplateException setAddional(TemplateException te, TagLibTag tlt)
           
 Page transform(ConfigImpl config, CFMLString cfml, TagLib[] tlibs, FunctionLib[] flibs, long sourceLastModified)
          Startmethode zum transfomieren einer CFMLString.
 Page transform(ConfigImpl config, SourceFile sf, TagLib[] tlibs, FunctionLib[] flibs)
          Startmethode zum transfomieren einer CFML Datei.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TAG_LIB_GLOBAL

public static short TAG_LIB_GLOBAL

TAG_LIB_PAGE

public static short TAG_LIB_PAGE
Constructor Detail

CFMLTransformer

public CFMLTransformer()
Method Detail

transform

public Page transform(ConfigImpl config,
                      SourceFile sf,
                      TagLib[] tlibs,
                      FunctionLib[] flibs)
               throws TemplateException,
                      IOException
Startmethode zum transfomieren einer CFML Datei.
EBNF:
{body}

Parameters:
config -
sf - CFML File
tlibs - Tag Library Deskriptoren, nach denen innerhalb der CFML Datei geprft werden soll.
flibs - Function Library Deskriptoren, nach denen innerhalb der Expressions der CFML Datei geprft werden soll.
Returns:
ᅵbersetztes CFXD Dokument Element.
Throws:
TemplateException
IOException

getTLT

public static TagLibTag getTLT(CFMLString cfml,
                               String name)
                        throws TemplateException
Throws:
TemplateException

transform

public Page transform(ConfigImpl config,
                      CFMLString cfml,
                      TagLib[] tlibs,
                      FunctionLib[] flibs,
                      long sourceLastModified)
               throws TemplateException
Startmethode zum transfomieren einer CFMLString.
EBNF:
{body}

Parameters:
config -
cfml - CFMLString
tlibs - Tag Library Deskriptoren, nach denen innerhalb der CFML Datei geprft werden soll.
flibs - Function Library Deskriptoren, nach denen innerhalb der Expressions der CFML Datei geprft werden soll.
sourceLastModified -
Returns:
ᅵbersetztes CFXD Dokument Element.
Throws:
TemplateException

comment

public static void comment(CFMLString cfml,
                           boolean removeSpace)
                    throws TemplateException
Liest einen Kommentar ein, Kommentare werden nicht in die CFXD bertragen sondern verworfen. Komentare k￶nnen auch Kommentare enthalten.
EBNF:
""} "--->";

Throws:
TemplateException

comment

public static boolean comment(CFMLString cfml)
                       throws TemplateException
Throws:
TemplateException

attributes

public static void attributes(CFMLTransformer.Data data,
                              TagLibTag tag,
                              Tag parent)
                       throws TemplateException
Liest die Attribute eines Tags ein, dies Abh¦ngig von der Definition innerhalb der Tag-Lib. Hierbei unterscheiden wir vier verschiedene Arten von Attributen:

EBNF:
({spaces attribute} "/>" | {spaces attribute} ">") | attribute-value;(* Welcher Teil der "oder" Bedingung ausgefhrt wird, ist abh¦ngig von der Tag Attribute Definition in der Tag Lib. *)

Parameters:
tag -
parent -
Throws:
TemplateException

attributeValue

public static Expression attributeValue(CFMLTransformer.Data data,
                                        TagLibTag tag,
                                        String type,
                                        boolean parseExpression,
                                        boolean isNonName,
                                        Expression noExpression)
                                 throws TemplateException
Liest den Wert eines Attribut, mithilfe des innerhalb der Tag-Lib definierten Expression Transformer, ein.
EBNF:
expression;

Parameters:
tag -
type -
parseExpression -
isNonName -
Returns:
Element Eingelesener bersetzer Wert des Attributes.
Throws:
TemplateException

identifier

public static String identifier(CFMLString cfml,
                                boolean throwError)
                         throws TemplateException
Liest einen Identifier ein und gibt diesen als String zurck.
EBNF:
(letter | "_") {letter | "_"|digit};

Parameters:
throwError - throw error or return null if name is invalid
Returns:
Identifier String.
Throws:
TemplateException

createTemplateException

public static TemplateException createTemplateException(CFMLString cfml,
                                                        String msg,
                                                        String detail,
                                                        TagLibTag tag)

createTemplateException

public static TemplateException createTemplateException(CFMLString cfml,
                                                        String msg,
                                                        TagLibTag tag)

setAddional

public static TemplateException setAddional(TemplateException te,
                                            TagLibTag tlt)

setAddional

public static ApplicationException setAddional(ApplicationException ae,
                                               TagLibTag tlt)


Copyright © 2012 Railo