001: /*
002: * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/web/templates/TKHTMLTemplateSyntax.java,v 1.7 2000/07/04 11:51:08 alex Exp $
003: *
004: */
005: package com.teamkonzept.web.templates;
006:
007: import java.util.*;
008: import com.oroinc.text.regex.*;
009:
010: import com.teamkonzept.lib.*;
011: import com.teamkonzept.lib.templates.*;
012: import com.teamkonzept.web.*;
013:
014: /**
015: * Der Syntaxbaum eines Templates
016: */
017: public class TKHTMLTemplateSyntax extends TKTemplateSyntax {
018:
019: static protected final String patCheckMarker = "CHK";
020: static protected final String patSelectMarker = "SEL";
021: static protected final String patOptionMarker = "OPT";
022:
023: public static final String currYear = Integer
024: .toString((new java.util.Date()).getYear() + 1900);
025:
026: public TKTemplate getNewTemplate() {
027: return new TKHTMLTemplate(this );
028: }
029:
030: public TKTemplateData getNewTemplateData() {
031: return new TKHTMLTemplateData();
032: }
033:
034: public String getDefaultEncoding() {
035: return TKHtmlConverter.CONV_ID;
036: }
037:
038: /**
039: */
040: public TKHTMLTemplateSyntax() {
041: }
042:
043: public TKHTMLTemplateSyntax(Pattern patTKTag) {
044: super (patTKTag);
045: }
046:
047: /************************************************************************
048: /**
049: * Konstruktor1
050: * Konstrukror2 wird aufgerufen
051: *
052: * @param String text, das vollstaendige Template als String
053: */
054: public TKHTMLTemplateSyntax(String text, String source)
055: throws TKTemplateSyntaxException {
056: super (text, source);
057: }
058:
059: public TKHTMLTemplateSyntax(String text, String source,
060: Pattern patTKTag) throws TKTemplateSyntaxException {
061: super (text, source, patTKTag);
062: }
063:
064: public TKHTMLTemplateSyntax(String text, String source,
065: boolean applyConverter) throws TKTemplateSyntaxException {
066: super (text, source, applyConverter);
067: }
068:
069: /************************************************************************
070: /**
071: * Konstruktor2
072: * Der uebergebene String wird Tag fuer Tag bearbeitet. Wird ein Tag gefunden,
073: * so wird das entsprechende Tag-Objekt erzeugt. Dieses Tag kann wiederum Syntaxobjekte
074: * beinhalten, so das auch dieses Syntaxobjekte erzeugen muessen, die dann
075: * die Kinder des zuvorigen Syntaxobjektes bilden. Zu jedem Syntaxobjekt werden
076: * der zugehoerige Text gespeichert.
077: * Hierdurch wird eine rekursive Datenstruktur aufgebaut, welche es ermoeglicht,
078: * ein Template exakt in einer Objekthierachie wiederzuspiegeln.
079: *
080: * DIE PATTERN:
081: * patPreTag = "TK_";
082: * String patRefTag = "(SRC|HREF|ACTION|BACKGROUND)";
083: * patCopyRight = compiler.compile( "<HTML>", Perl5Compiler.CASE_INSENSITIVE_MASK );
084: * patBaseURL = compiler.compile(" "+patRefTag+"\\s*\\=\\s*\"(?!(/|#|\\w+?(:|:)))", Perl5Compiler.CASE_INSENSITIVE_MASK);
085: * patTKTag = compiler.compile("</?"+patPreTag, Perl5Compiler.CASE_INSENSITIVE_MASK);
086: * patCleanEmpty = compiler.compile("\n\\s*\n");
087: *
088: *
089: * @param PatternMatcherInput matcherInput, ist der umgewandelte
090: * String des Templates als Text
091: */
092:
093: public TKHTMLTemplateSyntax(PatternMatcherInput matcherInput,
094: String source) throws TKTemplateSyntaxException {
095: super (matcherInput, source);
096: }
097:
098: public TKTag getTag(String tagType, String tagData,
099: PatternMatcherInput matcherInput, boolean hasSubTags)
100: throws TKTemplateSyntaxException {
101: if (tagType.equals(patCheckMarker))
102: return new TKCheckTag(this , tagData, hasSubTags);
103: if (tagType.equals(patSelectMarker))
104: return new TKSelectTag(this , tagData, hasSubTags);
105: if (tagType.equals(patOptionMarker))
106: return new TKOptionTag(this , tagData, hasSubTags);
107: return super .getTag(tagType, tagData, matcherInput, hasSubTags);
108: }
109: }//end class
|