1 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 ; 38 import java.io.IOException ; 39 40 public class RenderTag extends WebWorkBodyTagSupport 41 { 42 protected void initParserQueue(ParserQueue q) 43 { 44 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("<", "<")); 82 q.queueParser(new ReplaceParser(">", ">")); 83 } 84 85 public int doEndTag() throws JspException 86 { 87 String body = getBodyContent().getString(); 88 if (body != null && body.length() != 0) 89 { 90 ParserQueue q = new ParserQueue(); 92 q.setSource(body); 93 initParserQueue(q); 94 95 while (q.hasMore()) 97 printNode(q.next()); 98 } 99 100 return super.doEndTag(); 101 } 102 103 public void printNode(Node n) throws JspException 104 { 105 try 106 { 107 getPreviousOut().print(EscapedString.strip(n.toString())); 108 } 109 catch (IOException e) 110 { 111 e.printStackTrace(); 112 throw new JspException (e); 113 } 114 } 115 } 116 | Popular Tags |