From: <dr...@us...> - 2003-07-03 05:30:58
|
Update of /cvsroot/webmacro/wiki/src/org/tcdi/opensource/wiki/parser In directory sc8-pr-cvs1:/tmp/cvs-serv7466a/src/org/tcdi/opensource/wiki/parser Modified Files: WikiParser.java WikiParserConstants.java WikiParserTokenManager.java wiki.jj Log Message: - fixed rendering issues with DiffPage - add begin() and done() notifications to the page builder - add parser/renderer supported for numbered lists - fix rendering bug with: ~~ - fix bugs where one could create a page with all lower-case letters (also cleaned up filesystem of production webserver) - add ability to Preview before Saving a page edit - cleanup "thank you for registering" page a little bit - don't show the "Diff to Previous" link if we're not actually viewing a valid page - attempt to convince WMServlet to log my exception stack traces so I can hunt down the cause of a few NPE's I've seen in the error log on the production server Index: WikiParser.java =================================================================== RCS file: /cvsroot/webmacro/wiki/src/org/tcdi/opensource/wiki/parser/WikiParser.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** WikiParser.java 27 Nov 2002 07:06:32 -0000 1.5 --- WikiParser.java 3 Jul 2003 05:20:08 -0000 1.6 *************** *** 58,62 **** final public WikiPage parse(WikiPageBuilder builder) throws ParseException { ! Token t; label_1: while (true) { --- 58,63 ---- final public WikiPage parse(WikiPageBuilder builder) throws ParseException { ! Token t; ! builder.begin(); label_1: while (true) { *************** *** 69,72 **** --- 70,74 ---- case GT: case LI: + case LI_NUMBERED: case COLOR: case HEADER: *************** *** 82,85 **** --- 84,88 ---- case INDENT: case WHITESPACE: + case TILDE: case ASTERISK: case UNDERSCORE: *************** *** 106,109 **** --- 109,116 ---- builder.li(); break; + case LI_NUMBERED: + t = jj_consume_token(LI_NUMBERED); + builder.liNumbered(); + break; case BOLD: t = jj_consume_token(BOLD); *************** *** 192,195 **** --- 199,206 ---- builder.space(); break; + case TILDE: + t = jj_consume_token(TILDE); + builder.word ("~"); + break; case ASTERISK: t = jj_consume_token(ASTERISK); *************** *** 226,229 **** --- 237,241 ---- } } + builder.done(); {if (true) return builder.getPage ();} throw new Error("Missing return statement in function"); *************** *** 237,241 **** final private int[] jj_la1 = new int[2]; final private int[] jj_la1_0 = {0xfffffc00,0xfffffc00,}; ! final private int[] jj_la1_1 = {0x7,0x7,}; public WikiParser(java.io.InputStream stream) { --- 249,253 ---- final private int[] jj_la1 = new int[2]; final private int[] jj_la1_0 = {0xfffffc00,0xfffffc00,}; ! final private int[] jj_la1_1 = {0x1f,0x1f,}; public WikiParser(java.io.InputStream stream) { *************** *** 335,340 **** final public ParseException generateParseException() { jj_expentries.removeAllElements(); ! boolean[] la1tokens = new boolean[35]; ! for (int i = 0; i < 35; i++) { la1tokens[i] = false; } --- 347,352 ---- final public ParseException generateParseException() { jj_expentries.removeAllElements(); ! boolean[] la1tokens = new boolean[37]; ! for (int i = 0; i < 37; i++) { la1tokens[i] = false; } *************** *** 355,359 **** } } ! for (int i = 0; i < 35; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; --- 367,371 ---- } } ! for (int i = 0; i < 37; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; Index: WikiParserConstants.java =================================================================== RCS file: /cvsroot/webmacro/wiki/src/org/tcdi/opensource/wiki/parser/WikiParserConstants.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** WikiParserConstants.java 27 Nov 2002 07:06:32 -0000 1.2 --- WikiParserConstants.java 3 Jul 2003 05:20:08 -0000 1.3 *************** *** 61,82 **** int GT = 15; int LI = 16; ! int COLOR = 17; ! int HEADER = 18; ! int COLOR_HEADER_TERMINATE = 19; ! int RULE = 20; ! int EMAIL = 21; ! int URL = 22; ! int WIKI_TERM = 23; ! int SHORT_WIKI_TERM = 24; ! int WORD = 25; ! int NEW_PARAGRAPH = 26; ! int LINE_BREAK = 27; ! int INDENT = 28; ! int WHITESPACE = 29; ! int ASTERISK = 30; ! int UNDERSCORE = 31; ! int CARET = 32; ! int DOUBLE_LBRACKET = 33; ! int DELIMITERS = 34; int DEFAULT = 0; --- 61,84 ---- int GT = 15; int LI = 16; ! int LI_NUMBERED = 17; ! int COLOR = 18; ! int HEADER = 19; ! int COLOR_HEADER_TERMINATE = 20; ! int RULE = 21; ! int EMAIL = 22; ! int URL = 23; ! int WIKI_TERM = 24; ! int SHORT_WIKI_TERM = 25; ! int WORD = 26; ! int NEW_PARAGRAPH = 27; ! int LINE_BREAK = 28; ! int INDENT = 29; ! int WHITESPACE = 30; ! int TILDE = 31; ! int ASTERISK = 32; ! int UNDERSCORE = 33; ! int CARET = 34; ! int DOUBLE_LBRACKET = 35; ! int DELIMITERS = 36; int DEFAULT = 0; *************** *** 100,103 **** --- 102,106 ---- "\">\"", "<LI>", + "<LI_NUMBERED>", "<COLOR>", "<HEADER>", *************** *** 113,116 **** --- 116,120 ---- "<INDENT>", "<WHITESPACE>", + "\"~~\"", "\"**\"", "\"__\"", Index: WikiParserTokenManager.java =================================================================== RCS file: /cvsroot/webmacro/wiki/src/org/tcdi/opensource/wiki/parser/WikiParserTokenManager.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** WikiParserTokenManager.java 12 Mar 2003 17:53:33 -0000 1.5 --- WikiParserTokenManager.java 3 Jul 2003 05:20:08 -0000 1.6 *************** *** 54,109 **** { case 0: ! if ((active0 & 0x200000000L) != 0L) { ! jjmatchedKind = 34; return 0; } ! if ((active0 & 0x100000L) != 0L) { ! jjmatchedKind = 34; [...1226 lines suppressed...] "DEFAULT", }; private SimpleCharStream input_stream; ! private final int[] jjrounds = new int[58]; ! private final int[] jjstateSet = new int[116]; protected char curChar; public WikiParserTokenManager(SimpleCharStream stream) *************** *** 886,890 **** int i; jjround = 0x80000001; ! for (i = 53; i-- > 0;) jjrounds[i] = 0x80000000; } --- 912,916 ---- int i; jjround = 0x80000001; ! for (i = 58; i-- > 0;) jjrounds[i] = 0x80000000; } Index: wiki.jj =================================================================== RCS file: /cvsroot/webmacro/wiki/src/org/tcdi/opensource/wiki/parser/wiki.jj,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** wiki.jj 12 Mar 2003 17:53:33 -0000 1.8 --- wiki.jj 3 Jul 2003 05:20:08 -0000 1.9 *************** *** 84,87 **** --- 84,88 ---- | < GT: ">" > | < LI: (<NL>)+ "-" (<WHITESPACE>)+ > + | < LI_NUMBERED: (<NL>)+ "#" (<WHITESPACE>)+ > | < COLOR: "^" (<ALPHANUM>)+ > | < HEADER: "^@" (<ALPHANUM>)* > *************** *** 97,100 **** --- 98,102 ---- | < INDENT: <SPACE> <SPACE> > | < WHITESPACE: <SPACE> | <TAB> > + | < TILDE: "~~" > | < ASTERISK: "**" > | < UNDERSCORE: "__" > *************** *** 104,113 **** } ! WikiPage parse (WikiPageBuilder builder) : { Token t;} ! { ( t = <LT> { builder.lt(); } | t = <GT> { builder.gt(); } | t = <LI> { builder.li(); } | t = <BOLD> { builder.bold(); } | t = <UNDERLINE> { builder.underline(); } --- 106,118 ---- } ! WikiPage parse (WikiPageBuilder builder) : { ! Token t; ! builder.begin(); ! } { ( t = <LT> { builder.lt(); } | t = <GT> { builder.gt(); } | t = <LI> { builder.li(); } + | t = <LI_NUMBERED> { builder.liNumbered(); } | t = <BOLD> { builder.bold(); } | t = <UNDERLINE> { builder.underline(); } *************** *** 162,165 **** --- 167,171 ---- | t = <INDENT> { builder.indent(2); } | t = <WHITESPACE> { builder.space(); } + | t = <TILDE> { builder.word ("~"); } | t = <ASTERISK> { builder.word ("*"); } | t = <UNDERSCORE> { builder.word ("_"); } *************** *** 170,173 **** --- 176,180 ---- | t = <QUOTED_BLOCK> { builder.quotedBlock (t.image.substring(2, t.image.length()-2)); } )* { + builder.done(); return builder.getPage (); } |