Author: ltheussl Date: Fri May 27 07:22:11 2011 New Revision: 1128181 URL: http://svn.apache.org/viewvc?rev=1128181&view=rev Log: [DOXIA-426] Markdown module: apply doxia-module-markdown-2.patch with some modifications Submitted by: Julien Nicoulaud
Added: maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/bold.md maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/code.md maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/image.md maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/italic.md maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/link.md maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/list.md maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/numbered-list.md maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/paragraph.md Removed: maven/sandbox/trunk/doxia/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParseException.java maven/sandbox/trunk/doxia/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownSink.java maven/sandbox/trunk/doxia/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownSinkFactory.java Modified: maven/sandbox/trunk/doxia/doxia-module-markdown/pom.xml maven/sandbox/trunk/doxia/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java Modified: maven/sandbox/trunk/doxia/doxia-module-markdown/pom.xml URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-markdown/pom.xml?rev=1128181&r1=1128180&r2=1128181&view=diff ============================================================================== --- maven/sandbox/trunk/doxia/doxia-module-markdown/pom.xml (original) +++ maven/sandbox/trunk/doxia/doxia-module-markdown/pom.xml Fri May 27 07:22:11 2011 @@ -52,7 +52,11 @@ under the License. <dependency> <groupId>org.pegdown</groupId> <artifactId>pegdown</artifactId> - <version>0.9.2</version> + <version>1.0.1</version> + </dependency> + <dependency> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-module-xhtml</artifactId> </dependency> </dependencies> Modified: maven/sandbox/trunk/doxia/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java?rev=1128181&r1=1128180&r2=1128181&view=diff ============================================================================== --- maven/sandbox/trunk/doxia/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java (original) +++ maven/sandbox/trunk/doxia/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java Fri May 27 07:22:11 2011 @@ -21,8 +21,10 @@ package org.apache.maven.doxia.module.ma import java.io.IOException; import java.io.Reader; +import java.io.StringReader; -import org.apache.maven.doxia.parser.AbstractTextParser; +import org.apache.maven.doxia.module.xhtml.XhtmlParser; +import org.apache.maven.doxia.parser.ParseException; import org.apache.maven.doxia.sink.Sink; import org.codehaus.plexus.util.IOUtil; @@ -40,7 +42,7 @@ import org.pegdown.PegDownProcessor; * @since 1.3 */ public class MarkdownParser - extends AbstractTextParser + extends XhtmlParser { /** @@ -57,16 +59,17 @@ public class MarkdownParser /** * {@inheritDoc} */ + @Override public void parse( Reader reader, Sink sink ) - throws MarkdownParseException + throws ParseException { try { - sink.rawText( PEGDOWN_PROCESSOR.markdownToHtml( IOUtil.toString( reader ) ) ); + super.parse( new StringReader( "<html><body>" + PEGDOWN_PROCESSOR.markdownToHtml( IOUtil.toString( reader ) ) + "</body></html>" ), sink ); } catch ( IOException e ) { - throw new MarkdownParseException( "Failed reading Markdown source document", e ); + throw new ParseException( "Failed reading Markdown source document", e ); } } } Modified: maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java?rev=1128181&r1=1128180&r2=1128181&view=diff ============================================================================== --- maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java (original) +++ maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java Fri May 27 07:22:11 2011 @@ -19,8 +19,17 @@ package org.apache.maven.doxia.module.ma * under the License. */ +import java.io.Reader; + +import java.util.Iterator; + import org.apache.maven.doxia.parser.AbstractParserTest; +import org.apache.maven.doxia.parser.ParseException; import org.apache.maven.doxia.parser.Parser; +import org.apache.maven.doxia.sink.SinkEventElement; +import org.apache.maven.doxia.sink.SinkEventTestingSink; + +import org.codehaus.plexus.util.IOUtil; /** * Tests for {@link MarkdownParser}. @@ -64,4 +73,179 @@ public class MarkdownParserTest { return MarkdownSiteModule.FILE_EXTENSION; } + + /** + * Assert the paragraph sink event is fired when parsing "paragraph.md". + * + * @throws Exception if the event list is not correct when parsing the document. + */ + public void testParagraphSinkEvent() throws Exception + { + Iterator<SinkEventElement> it = parseFileToEventTestingSink( "paragraph" ).getEventList().iterator(); + + assertEquals( "body", ( it.next() ).getName() ); + assertEquals( "paragraph", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "paragraph_", ( it.next() ).getName() ); + assertEquals( "body_", ( it.next() ).getName() ); + + assertFalse( it.hasNext() ); + } + + /** + * Assert the bold sink event is fired when parsing "bold.md". + * + * @throws Exception if the event list is not correct when parsing the document. + */ + public void testBoldSinkEvent() throws Exception + { + Iterator<SinkEventElement> it = parseFileToEventTestingSink( "bold" ).getEventList().iterator(); + + assertEquals( "body", ( it.next() ).getName() ); + assertEquals( "paragraph", ( it.next() ).getName() ); + assertEquals( "bold", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "bold_", ( it.next() ).getName() ); + assertEquals( "paragraph_", ( it.next() ).getName() ); + assertEquals( "body_", ( it.next() ).getName() ); + + assertFalse( it.hasNext() ); + } + + /** + * Assert the italic sink event is fired when parsing "italic.md". + * + * @throws Exception if the event list is not correct when parsing the document. + */ + public void testItalicSinkEvent() throws Exception + { + Iterator<SinkEventElement> it = parseFileToEventTestingSink( "italic" ).getEventList().iterator(); + + assertEquals( "body", ( it.next() ).getName() ); + assertEquals( "paragraph", ( it.next() ).getName() ); + assertEquals( "italic", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "italic_", ( it.next() ).getName() ); + assertEquals( "paragraph_", ( it.next() ).getName() ); + assertEquals( "body_", ( it.next() ).getName() ); + + assertFalse( it.hasNext() ); + } + + /** + * Assert the code sink event is fired when parsing "code.md". + * + * @throws Exception if the event list is not correct when parsing the document. + */ + public void testCodeSinkEvent() throws Exception + { + Iterator<SinkEventElement> it = parseFileToEventTestingSink( "code" ).getEventList().iterator(); + + assertEquals( "body", ( it.next() ).getName() ); + assertEquals( "paragraph", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "paragraph_", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "verbatim", ( it.next() ).getName() ); + assertEquals( "monospaced", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "monospaced_", ( it.next() ).getName() ); + assertEquals( "verbatim_", ( it.next() ).getName() ); + assertEquals( "body_", ( it.next() ).getName() ); + + assertFalse( it.hasNext() ); + } + + /** + * Assert the image sink event is fired when parsing "image.md". + * + * @throws Exception if the event list is not correct when parsing the document. + */ + public void testImageSinkEvent() throws Exception + { + Iterator<SinkEventElement> it = parseFileToEventTestingSink( "image" ).getEventList().iterator(); + + assertEquals( "body", ( it.next() ).getName() ); + assertEquals( "paragraph", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "figureGraphics", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "paragraph_", ( it.next() ).getName() ); + assertEquals( "body_", ( it.next() ).getName() ); + + assertFalse( it.hasNext() ); + } + + /** + * Assert the link sink event is fired when parsing "link.md". + * + * @throws Exception if the event list is not correct when parsing the document. + */ + public void testLinkSinkEvent() throws Exception + { + Iterator<SinkEventElement> it = parseFileToEventTestingSink( "link" ).getEventList().iterator(); + + assertEquals( "body", ( it.next() ).getName() ); + assertEquals( "paragraph", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "link", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "link_", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "paragraph_", ( it.next() ).getName() ); + assertEquals( "body_", ( it.next() ).getName() ); + + assertFalse( it.hasNext() ); + } + + /** + * Assert the numbered list sink event is fired when parsing "numbered-list.md". + * + * @throws Exception if the event list is not correct when parsing the document. + */ + public void testNumberedListSinkEvent() throws Exception + { + Iterator<SinkEventElement> it = parseFileToEventTestingSink( "numbered-list" ).getEventList().iterator(); + + assertEquals( "body", ( it.next() ).getName() ); + assertEquals( "numberedList", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "numberedListItem", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "numberedListItem_", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "numberedListItem", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "numberedListItem_", ( it.next() ).getName() ); + assertEquals( "text", ( it.next() ).getName() ); + assertEquals( "numberedList_", ( it.next() ).getName() ); + assertEquals( "body_", ( it.next() ).getName() ); + + assertFalse( it.hasNext() ); + } + + /** + * Parse the file and return a {@link SinkEventTestingSink}. + * + * @param file the file to parse with {@link #parser}. + * @return a sink to test parsing events. + * @throws ParseException if the document parsing failed. + */ + protected SinkEventTestingSink parseFileToEventTestingSink( String file ) throws ParseException + { + Reader reader = null; + SinkEventTestingSink sink = null; + try + { + reader = getTestReader( file ); + sink = new SinkEventTestingSink(); + parser.parse( reader, sink ); + } + finally + { + IOUtil.close( reader ); + } + + return sink; + } } Added: maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/bold.md URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/bold.md?rev=1128181&view=auto ============================================================================== --- maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/bold.md (added) +++ maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/bold.md Fri May 27 07:22:11 2011 @@ -0,0 +1 @@ +**This is italic text.** Added: maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/code.md URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/code.md?rev=1128181&view=auto ============================================================================== --- maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/code.md (added) +++ maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/code.md Fri May 27 07:22:11 2011 @@ -0,0 +1,3 @@ +Here is some code: + + mvn clean package Added: maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/image.md URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/image.md?rev=1128181&view=auto ============================================================================== --- maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/image.md (added) +++ maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/image.md Fri May 27 07:22:11 2011 @@ -0,0 +1 @@ +This is an image: . Added: maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/italic.md URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/italic.md?rev=1128181&view=auto ============================================================================== --- maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/italic.md (added) +++ maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/italic.md Fri May 27 07:22:11 2011 @@ -0,0 +1 @@ +*This is italic text.* Added: maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/link.md URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/link.md?rev=1128181&view=auto ============================================================================== --- maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/link.md (added) +++ maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/link.md Fri May 27 07:22:11 2011 @@ -0,0 +1 @@ +This is a [link](http://example). Added: maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/list.md URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/list.md?rev=1128181&view=auto ============================================================================== --- maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/list.md (added) +++ maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/list.md Fri May 27 07:22:11 2011 @@ -0,0 +1,2 @@ +* List item +* List item \ No newline at end of file Added: maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/numbered-list.md URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/numbered-list.md?rev=1128181&view=auto ============================================================================== --- maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/numbered-list.md (added) +++ maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/numbered-list.md Fri May 27 07:22:11 2011 @@ -0,0 +1,2 @@ +1. List item +2. List item Added: maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/paragraph.md URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/paragraph.md?rev=1128181&view=auto ============================================================================== --- maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/paragraph.md (added) +++ maven/sandbox/trunk/doxia/doxia-module-markdown/src/test/resources/paragraph.md Fri May 27 07:22:11 2011 @@ -0,0 +1 @@ +This is a paragraph.