From: <tri...@us...> - 2007-08-20 09:45:36
|
Revision: 12 http://staticwiki.svn.sourceforge.net/staticwiki/?rev=12&view=rev Author: triathlon98 Date: 2007-08-20 02:34:08 -0700 (Mon, 20 Aug 2007) Log Message: ----------- support "----" to include a horizontal rule Modified Paths: -------------- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/ParagraphLineHandler.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/QuoteLineHandler.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/WikiLineContext.java trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/WikiRenderPipeline.txt Added Paths: ----------- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/RuleLineHandler.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/renderer/line/RuleLineRendererTest.java Modified: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/ParagraphLineHandler.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/ParagraphLineHandler.java 2007-08-17 13:58:17 UTC (rev 11) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/ParagraphLineHandler.java 2007-08-20 09:34:08 UTC (rev 12) @@ -45,7 +45,8 @@ } else { - result.append( context.getParagraphBreak() ); + if ( !context.isSuppressBreak() ) result.append( context.getParagraphBreak() ); + context.setSuppressBreak( false ); } subRenderer.subRender( result, line ); } Modified: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/QuoteLineHandler.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/QuoteLineHandler.java 2007-08-17 13:58:17 UTC (rev 11) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/QuoteLineHandler.java 2007-08-20 09:34:08 UTC (rev 12) @@ -25,6 +25,7 @@ { private static String BLOCKQUOTE_START = "<blockquote><p>"; private static String BLOCKQUOTE_END = "</p></blockquote>"; + private static String BLOCKQUOTE_BREAK = "<br />"; public boolean render( TextBuilder result, CharSequence line, WikiSubRenderer subRenderer, WikiLineContext context ) { @@ -32,7 +33,7 @@ { context.flush( result ); context.setNewParagraph( true ); - context.setParagraphBreak( BLOCKQUOTE_END ); + context.setParagraphBreak( BLOCKQUOTE_BREAK ); context.setParagraphEnd( BLOCKQUOTE_END ); result.append( BLOCKQUOTE_START ); subRenderer.subRender( result, line.subSequence( 4, line.length() ) ); Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/RuleLineHandler.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/RuleLineHandler.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/RuleLineHandler.java 2007-08-20 09:34:08 UTC (rev 12) @@ -0,0 +1,49 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (the "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://www.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki.renderer.line; + +import javolution.lang.TextBuilder; +import org.staticwiki.wiki.renderer.WikiSubRenderer; + +/** + * Render a horizontal rule, triggered by having (four or more) dashes at the beginning of the line. + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public class RuleLineHandler + implements WikiLineHandler +{ + private static String RULE = "<hr />"; + + public boolean render( TextBuilder result, CharSequence line, WikiSubRenderer subRenderer, WikiLineContext context ) + { + if ( line.length() >= 4 && '-' == line.charAt( 0 ) && '-' == line.charAt( 1 ) && '-' == line.charAt( 2 ) && + '-' == line.charAt( 3 ) ) + { + int pos = 4; + // extra dashes at the start are allowed + while ( pos < line.length() && '-' == line.charAt( pos ) ) pos++; + // only spaces after that are allowed + while ( pos < line.length() && Character.isWhitespace( line.charAt( pos ) ) ) pos++; + + if ( pos >= line.length() ) + { + result.append( RULE ); + context.setSuppressBreak( true ); + return true; + } + } + return false; + } + +} Modified: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/WikiLineContext.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/WikiLineContext.java 2007-08-17 13:58:17 UTC (rev 11) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/WikiLineContext.java 2007-08-20 09:34:08 UTC (rev 12) @@ -24,6 +24,7 @@ String paragraphBreak = "<br />"; String paragraphEnd; boolean newParagraph = true; + boolean suppressBreak = false; public boolean isNewParagraph() { @@ -55,6 +56,16 @@ this.paragraphEnd = paragraphEnd; } + public boolean isSuppressBreak() + { + return suppressBreak; + } + + public void setSuppressBreak( boolean suppressBreak ) + { + this.suppressBreak = suppressBreak; + } + public void flush( TextBuilder result ) { if ( paragraphEnd != null ) result.append( paragraphEnd ); Modified: trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/WikiRenderPipeline.txt =================================================================== --- trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/WikiRenderPipeline.txt 2007-08-17 13:58:17 UTC (rev 11) +++ trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/WikiRenderPipeline.txt 2007-08-20 09:34:08 UTC (rev 12) @@ -1,12 +1,13 @@ org.staticwiki.wiki.renderer.line.LineRenderer org.staticwiki.wiki.renderer.line.HeaderLineHandler org.staticwiki.wiki.renderer.line.QuoteLineHandler +org.staticwiki.wiki.renderer.line.RuleLineHandler org.staticwiki.wiki.renderer.line.ParagraphLineHandler org.staticwiki.wiki.renderer.simple.SurroundMarkupRenderer|*|<b>|</b> org.staticwiki.wiki.renderer.simple.SurroundMarkupRenderer|_|<em>|</em> org.staticwiki.wiki.renderer.simple.SurroundMarkupRenderer|??|<cite>|</cite> org.staticwiki.wiki.renderer.simple.SurroundMarkupRenderer|-|<strikethrough>|</strikethrough> -org.staticwiki.wiki.renderer.simple.SurroundMarkupRenderer|+|<em>|</u> +org.staticwiki.wiki.renderer.simple.SurroundMarkupRenderer|+|<u>|</u> org.staticwiki.wiki.renderer.simple.SurroundMarkupRenderer|^|<sup>|</sup> org.staticwiki.wiki.renderer.simple.SurroundMarkupRenderer|~|<sub>|</sub> org.staticwiki.wiki.renderer.simple.SurroundMarkupRenderer|%|<tt class="monospaced">|</tt> Added: trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/renderer/line/RuleLineRendererTest.java =================================================================== --- trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/renderer/line/RuleLineRendererTest.java (rev 0) +++ trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/renderer/line/RuleLineRendererTest.java 2007-08-20 09:34:08 UTC (rev 12) @@ -0,0 +1,67 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (the "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://www.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki.renderer.line; + +import javolution.lang.TextBuilder; +import junit.framework.TestCase; +import org.staticwiki.wiki.WikiRenderer; +import org.staticwiki.wiki.WikiFactory; + +/** + * Some simple tests for the rule line renderer, see whether it renders the rule in the correct cases. + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public class RuleLineRendererTest + extends TestCase +{ + public void testNoRule() throws Exception + { + RuleLineHandler rlh=new RuleLineHandler(); + TextBuilder res = TextBuilder.newInstance(); + WikiLineContext context = new WikiLineContext(); + + assertFalse( rlh.render( res, "", null, context) ); + assertFalse( rlh.render( res, "---", null, context) ); + assertFalse( rlh.render( res, "---- -", null, context) ); + assertFalse( rlh.render( res, "----x", null, context) ); + assertFalse( rlh.render( res, "-----x", null, context) ); + } + + public void testIsRule() throws Exception + { + RuleLineHandler rlh=new RuleLineHandler(); + TextBuilder res = TextBuilder.newInstance(); + WikiLineContext context = new WikiLineContext(); + + assertTrue( rlh.render( res, "----", null, context) ); + assertTrue( rlh.render( res, "-----", null, context) ); + assertTrue( rlh.render( res, "------- ", null, context) ); + assertTrue( rlh.render( res, "-----\t\t ", null, context) ); + } + + public void testRuleWiki() + throws Exception + { + String test = "I want some simple text to verify\n" + + "----\n" + + "That including a rule works"; + String result = "<div class=\"wiki\"><p>I want some simple text to verify" + + "<hr />" + + "That including a rule works</p></div>"; + WikiRenderer wr = WikiFactory.getWikiRenderer(); + String got = wr.render( test ); + assertEquals( result, got ); + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |