1 package org.apache.maven.doxia.module.markdown;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.IOException;
23 import java.io.Reader;
24 import java.io.StringReader;
25
26 import org.apache.maven.doxia.module.xhtml.XhtmlParser;
27 import org.apache.maven.doxia.parser.ParseException;
28 import org.apache.maven.doxia.sink.Sink;
29
30 import org.codehaus.plexus.util.IOUtil;
31
32 import org.pegdown.Extensions;
33 import org.pegdown.PegDownProcessor;
34 import org.pegdown.ast.RootNode;
35
36
37
38
39
40
41
42
43
44
45 public class MarkdownParser
46 extends XhtmlParser
47 {
48
49
50
51
52 public static final String ROLE_HINT = "markdown";
53
54
55
56
57 protected static final PegDownProcessor PEGDOWN_PROCESSOR =
58 new PegDownProcessor( Extensions.ALL & ~Extensions.HARDWRAPS );
59
60
61
62
63 @Override
64 public void parse( Reader source, Sink sink )
65 throws ParseException
66 {
67 try
68 {
69 RootNode rootNode = PEGDOWN_PROCESSOR.parseMarkdown( IOUtil.toString( source ).toCharArray() );
70 String markdownAsHtml = new MarkdownToDoxiaHtmlSerializer().toHtml( rootNode );
71 super.parse( new StringReader( "<html><body>" + markdownAsHtml + "</body></html>" ), sink );
72 }
73 catch ( IOException e )
74 {
75 throw new ParseException( "Failed reading Markdown source document", e );
76 }
77 }
78 }