KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > killingar > wiki > taglib > RenderTag


1 /* Copyright 2000-2005 Anders Hovmöller
2  *
3  * The person or persons who have associated their work with
4  * this document (the "Dedicator") hereby dedicate the entire
5  * copyright in the work of authorship identified below (the
6  * "Work") to the public domain.
7  *
8  * Dedicator makes this dedication for the benefit of the
9  * public at large and to the detriment of Dedicator's heirs
10  * and successors. Dedicator intends this dedication to be an
11  * overt act of relinquishment in perpetuity of all present
12  * and future rights under copyright law, whether vested or
13  * contingent, in the Work. Dedicator understands that such
14  * relinquishment of all rights includes the relinquishment of
15  * all rights to enforce (by lawsuit or otherwise) those
16  * copyrights in the Work.
17  *
18  * Dedicator recognizes that, once placed in the public
19  * domain, the Work may be freely reproduced, distributed,
20  * transmitted, used, modified, built upon, or otherwise
21  * exploited by anyone for any purpose, commercial or non-
22  * commercial, and in any way, including by methods that have
23  * not yet been invented or conceived.
24  */

25
26 package net.killingar.wiki.taglib;
27
28 import net.killingar.EscapedString;
29 import net.killingar.wiki.Node;
30 import net.killingar.wiki.impl.TagNode;
31 import net.killingar.wiki.parser.ParserQueue;
32 import net.killingar.wiki.parser.ReplaceParser;
33 import net.killingar.wiki.parser.StringTagParser;
34 import net.killingar.wiki.parser.WikiLinkParser;
35 import webwork.view.taglib.WebWorkBodyTagSupport;
36
37 import javax.servlet.jsp.JspException JavaDoc;
38 import java.io.IOException JavaDoc;
39
40 public class RenderTag extends WebWorkBodyTagSupport
41 {
42   protected void initParserQueue(ParserQueue q)
43     {
44         // set up parser
45
q.queueParser(new WikiLinkParser());
46         q.queueParser(new StringTagParser("__")
47             {
48                 protected Node createNode(int line, int startIndex, int endIndex, boolean start)
49                 {
50                     return new TagNode("u", start, line, startIndex, endIndex);
51                 }
52             });
53         q.queueParser(new StringTagParser("**")
54             {
55                 protected Node createNode(int line, int startIndex, int endIndex, boolean start)
56                 {
57                     return new TagNode("b", start, line, startIndex, endIndex);
58                 }
59             });
60         q.queueParser(new StringTagParser("~~")
61             {
62                 protected Node createNode(int line, int startIndex, int endIndex, boolean start)
63                 {
64                     return new TagNode("i", start, line, startIndex, endIndex);
65                 }
66             });
67         q.queueParser(new StringTagParser("{quote}")
68             {
69                 protected Node createNode(int line, int startIndex, int endIndex, boolean start)
70                 {
71                     return new TagNode("blockquote", start, line, startIndex, endIndex);
72                 }
73             });
74         q.queueParser(new StringTagParser("{center}")
75             {
76                 protected Node createNode(int line, int startIndex, int endIndex, boolean start)
77                 {
78                     return new TagNode("center", start, line, startIndex, endIndex);
79                 }
80             });
81         q.queueParser(new ReplaceParser("<", "&lt;"));
82         q.queueParser(new ReplaceParser(">", "&gt;"));
83     }
84
85     public int doEndTag() throws JspException JavaDoc
86     {
87         String JavaDoc body = getBodyContent().getString();
88         if (body != null && body.length() != 0)
89         {
90             // set up parser
91
ParserQueue q = new ParserQueue();
92             q.setSource(body);
93             initParserQueue(q);
94
95             // print
96
while (q.hasMore())
97                 printNode(q.next());
98         }
99
100         return super.doEndTag();
101     }
102
103     public void printNode(Node n) throws JspException JavaDoc
104     {
105         try
106         {
107             getPreviousOut().print(EscapedString.strip(n.toString()));
108         }
109         catch (IOException JavaDoc e)
110         {
111             e.printStackTrace();
112             throw new JspException JavaDoc(e);
113         }
114     }
115 }
116
Popular Tags