KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > publishing > markups > TKMarkupTree


1 /*
2  * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/publishing/markups/TKMarkupTree.java,v 1.6 2001/06/11 09:14:10 alex Exp $
3  *
4  */

5 package com.teamkonzept.publishing.markups;
6
7 import java.util.*;
8
9 import com.teamkonzept.lib.*;
10 import org.apache.log4j.Category;
11
12 public class TKMarkupTree extends TKMarkupItemList
13 {
14     private static final Category cat = Category.getInstance(TKMarkupTree.class);
15     
16     public void dump (TKVector dump, int level) {
17     
18         if (dump == null) return;
19         
20         Enumeration e = elements();
21         while (e.hasMoreElements()) {
22         
23             Object JavaDoc elem = e.nextElement();
24             if (elem == null) continue;
25             
26             if (elem instanceof String JavaDoc)
27                 dump.addElement (new TKMarkupDumpRecord(level,"String",elem.toString()));
28                 
29             else if (elem instanceof TKMarkupNode)((TKMarkupNode) elem).dump (dump,level);
30             else if (elem instanceof TKMarkupTree)((TKMarkupTree) elem).dump (dump,level);
31             else if (elem instanceof TKMarkup) {
32
33                 TKMarkup markup = (TKMarkup) elem;
34                 dump.addElement(new TKMarkupDumpRecord(level,"Markup",markup.toDisplay()));
35             }
36         }
37     }
38
39     public String JavaDoc expand() {
40
41         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc ();
42
43         Enumeration e = elements();
44         while (e.hasMoreElements()) {
45         
46             Object JavaDoc elem = e.nextElement();
47             if (elem == null) continue;
48             
49             if (elem instanceof String JavaDoc) buffer.append(elem);
50             else if (elem instanceof TKMarkupNode) buffer.append (((TKMarkupNode) elem).expand());
51             else if (elem instanceof TKMarkupTree) buffer.append (((TKMarkupTree) elem).expand());
52             else if (elem instanceof TKMarkup) buffer.append (((TKMarkup) elem).expand());
53         }
54
55         return new String JavaDoc(buffer);
56     }
57
58     public String JavaDoc markupByName2tmpl (TKMarkupStatics statics, String JavaDoc name) {
59     
60         if (name == null) return " ";
61         
62         TKDefinedMarkup markup;
63
64         try { markup = new TKDefinedMarkup (name,new TKHashtable (),-1); }
65         catch (Exception JavaDoc ex) {
66         
67             cat.error("*** markupByName2tmpl: ", ex);
68             return " ";
69         }
70
71         try { markup.complete (); } catch (Exception JavaDoc ex) {
72         
73             cat.error("*** markupByName2tmpl: ",ex);
74         }
75
76         return markup.convert2Tmpl();
77     }
78
79     public String JavaDoc doCrControl (String JavaDoc text) {
80
81         TKMarkupStatics statics = TKMarkupStatics.setup();
82         boolean doCrConversion = TKMarkupDefinition.doCrConversion (statics);
83         String JavaDoc crMarkup = TKMarkupDefinition.crMarkup (statics);
84         String JavaDoc crcrMarkup = TKMarkupDefinition.crcrMarkup (statics);
85
86         if (!doCrConversion || (text == null)) return text;
87
88         StringBuffer JavaDoc digest = new StringBuffer JavaDoc();
89         int pos = 0;
90         
91         while (pos < text.length()) {
92         
93             char chr = text.charAt (pos);
94
95             if ((chr != '\n') && (chr != '\r')) digest.append (chr);
96
97             else {
98                 if (pos+1 < text.length())
99                     if ((chr == '\n') && (text.charAt (pos+1) == '\r')) pos++;
100                     else if ((chr == '\r') && (text.charAt (pos+1) == '\n')) pos++;
101                 
102                 if ((pos+1 < text.length()) &&
103                     ((text.charAt (pos+1) == '\n') ||
104                      (text.charAt (pos+1) == '\r'))) {
105
106                     pos++;
107                     chr = text.charAt (pos);
108
109                     if (pos+1 < text.length())
110                         if ((chr == '\n') && (text.charAt (pos+1) == '\r')) pos++;
111                         else if ((chr == '\r') && (text.charAt (pos+1) == '\n')) pos++;
112
113                     digest.append (markupByName2tmpl(statics,crcrMarkup));
114
115                 } else digest.append (markupByName2tmpl(statics,crMarkup));
116             }
117
118             pos++;
119         }
120             
121         return new String JavaDoc (digest);
122     }
123
124     public String JavaDoc convert2Tmpl () {
125
126         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc ();
127
128         Enumeration e = elements();
129         while (e.hasMoreElements()) {
130         
131             Object JavaDoc elem = e.nextElement();
132             if (elem == null) continue;
133             
134             if (elem instanceof String JavaDoc) buffer.append(doCrControl(TKMarkupParser.doEscapes((String JavaDoc) elem)));
135             else if (elem instanceof TKMarkupNode) buffer.append (((TKMarkupNode) elem).convert2Tmpl());
136             else if (elem instanceof TKMarkupTree) buffer.append (((TKMarkupTree) elem).convert2Tmpl());
137             else if (elem instanceof TKMarkup) {
138             
139                 TKMarkup markup = (TKMarkup) elem;
140                 buffer.append (markup.convert2Tmpl());
141
142                 if (elem instanceof TKDefinedMarkup) {
143
144                     if (!((TKDefinedMarkup) elem).isAtom)
145                         buffer.append ("</TK_TAG:").append(markup.name).append('>');
146
147                 } else buffer.append ("</").append(markup.name).append('>');
148             }
149         }
150
151         return new String JavaDoc(buffer);
152     }
153
154     public String JavaDoc convert2Xml () {
155
156         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc ();
157
158         Enumeration e = elements();
159         while (e.hasMoreElements()) {
160         
161             Object JavaDoc elem = e.nextElement();
162             if (elem == null) continue;
163             
164             if (elem instanceof String JavaDoc) buffer.append(doCrControl(elem.toString()));
165             else if (elem instanceof TKMarkupNode) buffer.append (((TKMarkupNode) elem).convert2Xml());
166             else if (elem instanceof TKMarkupTree) buffer.append (((TKMarkupTree) elem).convert2Xml());
167             else if (elem instanceof TKMarkup) {
168             
169                 TKMarkup markup = (TKMarkup) elem;
170                 buffer.append (markup.convert2Xml());
171
172                 if (!(elem instanceof TKDefinedMarkup) ||
173                         !((TKDefinedMarkup) elem).isAtom)
174                     buffer.append ("</").append(markup.name).append('>');
175             }
176         }
177
178         return new String JavaDoc(buffer);
179     }
180 }
181
Popular Tags