[DOXIA-426] Markdown module
Submitted by: Julien Nicoulaud

git-svn-id: https://svn.apache.org/repos/asf/maven/doxia/doxia/trunk@1129048 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/doxia-modules/doxia-module-markdown/pom.xml b/doxia-modules/doxia-module-markdown/pom.xml
new file mode 100644
index 0000000..e3d4018
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>doxia-modules</artifactId>
+        <groupId>org.apache.maven.doxia</groupId>
+        <version>1.3-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>doxia-module-markdown</artifactId>
+
+    <name>Doxia :: Markdown Module</name>
+    <description>
+        A Doxia module for Markdown source documents.
+    </description>
+    <url>http://maven.apache.org/doxia/doxia/doxia-modules/doxia-module-markdown/</url>
+
+    <contributors>
+        <contributor>
+            <name>Julien Nicoulaud</name>
+            <email>julien.nicoulaud@gmail.com</email>
+            <timezone>+1</timezone>
+            <url>http://www.twitter.com/nicoulaj</url>
+        </contributor>
+    </contributors>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.pegdown</groupId>
+            <artifactId>pegdown</artifactId>
+            <version>1.0.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.doxia</groupId>
+            <artifactId>doxia-module-xhtml</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>
diff --git a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java
new file mode 100644
index 0000000..d578516
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java
@@ -0,0 +1,75 @@
+package org.apache.maven.doxia.module.markdown;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+
+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;
+
+import org.pegdown.Extensions;
+import org.pegdown.PegDownProcessor;
+
+/**
+ * Implementation of {@link org.apache.maven.doxia.parser.Parser} for Markdown documents.
+ * <p/>
+ * Defers parsing to the <a href="http://pegdown.org">PegDown library</a>.
+ *
+ * @author Julien Nicoulaud <julien.nicoulaud@gmail.com>
+ * @plexus.component role="org.apache.maven.doxia.parser.Parser" role-hint="markdown"
+ * @since 1.3
+ */
+public class MarkdownParser
+    extends XhtmlParser
+{
+
+    /**
+     * The role hint for the {@link MarkdownParser} Plexus component.
+     */
+    public static final String ROLE_HINT = "markdown";
+
+    /**
+     * The {@link PegDownProcessor} used to convert Pegdown documents to HTML.
+     */
+    protected static final PegDownProcessor PEGDOWN_PROCESSOR =
+        new PegDownProcessor( Extensions.ALL & ~Extensions.HARDWRAPS );
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void parse( Reader reader, Sink sink )
+        throws ParseException
+    {
+        try
+        {
+            super.parse( new StringReader( "<html><body>" + PEGDOWN_PROCESSOR.markdownToHtml( IOUtil.toString( reader ) ) + "</body></html>" ), sink );
+        }
+        catch ( IOException e )
+        {
+            throw new ParseException( "Failed reading Markdown source document", e );
+        }
+    }
+}
diff --git a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownSiteModule.java b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownSiteModule.java
new file mode 100644
index 0000000..6a8f21d
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownSiteModule.java
@@ -0,0 +1,52 @@
+package org.apache.maven.doxia.module.markdown;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.doxia.module.site.AbstractSiteModule;
+
+/**
+ * {@link org.apache.maven.doxia.module.site.SiteModule} for Markdown.
+ *
+ * @author Julien Nicoulaud <julien.nicoulaud@gmail.com>
+ * @plexus.component role="org.apache.maven.doxia.module.site.SiteModule" role-hint="markdown"
+ * @since 1.3
+ */
+public class MarkdownSiteModule
+    extends AbstractSiteModule
+{
+
+    /**
+     * The source directory for Markdown files.
+     */
+    public static final String SOURCE_DIRECTORY = "markdown";
+
+    /**
+     * The extension for Markdown files.
+     */
+    public static final String FILE_EXTENSION = "md";
+
+    /**
+     * Build a new instance of {@link MarkdownSiteModule}.
+     */
+    public MarkdownSiteModule()
+    {
+        super( SOURCE_DIRECTORY, FILE_EXTENSION, MarkdownParser.ROLE_HINT );
+    }
+}
diff --git a/doxia-modules/doxia-module-markdown/src/site/apt/index.apt b/doxia-modules/doxia-module-markdown/src/site/apt/index.apt
new file mode 100644
index 0000000..cdabe7d
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/site/apt/index.apt
@@ -0,0 +1,40 @@
+ -----
+ doxia-module-markdown
+ -----
+ Julien Nicoulaud <julien.nicoulaud@gmail.com>
+ ------
+ 2011-05-28
+ ------
+
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements.  See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership.  The ASF licenses this file
+~~ to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing,
+~~ software distributed under the License is distributed on an
+~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~ KIND, either express or implied.  See the License for the
+~~ specific language governing permissions and limitations
+~~ under the License.
+
+~~ NOTE: For help with the syntax of this file, see:
+~~ http://maven.apache.org/doxia/references/apt-format.html
+
+doxia-module-markdown
+
+  Markdown is a popular lightweight markup language, easy to read and easy to write.
+  It is supported by a large panel of websites, text editors/IDEs and converter tools.
+
+  <<References>>
+
+   * {{{http://daringfireball.net/projects/markdown}Markdown project website}}
+
+   * {{{http://en.wikipedia.org/wiki/Markdown}Markdown Wikipedia page}}
+
+   * {{{http://xbeta.org/wiki/show/Markdown}Markdown wiki}}
diff --git a/doxia-modules/doxia-module-markdown/src/site/site.xml b/doxia-modules/doxia-module-markdown/src/site/site.xml
new file mode 100644
index 0000000..b72ef8f
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/site/site.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+ -->
+
+<project name="markdown" xmlns="http://maven.apache.org/DECORATION/1.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
+
+    <body>
+
+        <menu ref="parent"/>
+
+        <menu ref="reports"/>
+
+    </body>
+
+</project>
\ No newline at end of file
diff --git a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java
new file mode 100644
index 0000000..60bb9c2
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java
@@ -0,0 +1,277 @@
+package org.apache.maven.doxia.module.markdown;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * 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}.
+ *
+ * @author Julien Nicoulaud <julien.nicoulaud@gmail.com>
+ * @since 1.3
+ */
+public class MarkdownParserTest
+    extends AbstractParserTest
+{
+
+    /**
+     * The {@link MarkdownParser} used for the tests.
+     */
+    protected MarkdownParser parser;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        parser = (MarkdownParser) lookup( Parser.ROLE, MarkdownParser.ROLE_HINT );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected Parser createParser()
+    {
+        return parser;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected String outputExtension()
+    {
+        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 list sink event is fired when parsing "list.md".
+     *
+     * @throws Exception if the event list is not correct when parsing the document.
+     */
+    public void testListSinkEvent() throws Exception
+    {
+        Iterator<SinkEventElement> it = parseFileToEventTestingSink( "list" ).getEventList().iterator();
+
+        assertEquals( "body", it.next().getName() );
+        assertEquals( "list", it.next().getName() );
+        assertEquals( "text", it.next().getName() );
+        assertEquals( "listItem", it.next().getName() );
+        assertEquals( "text", it.next().getName() );
+        assertEquals( "listItem_", it.next().getName() );
+        assertEquals( "text", it.next().getName() );
+        assertEquals( "listItem", it.next().getName() );
+        assertEquals( "text", it.next().getName() );
+        assertEquals( "listItem_", it.next().getName() );
+        assertEquals( "text", it.next().getName() );
+        assertEquals( "list_", 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;
+    }
+}
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/bold.md b/doxia-modules/doxia-module-markdown/src/test/resources/bold.md
new file mode 100644
index 0000000..21d2a87
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/test/resources/bold.md
@@ -0,0 +1 @@
+**This is italic text.**
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/code.md b/doxia-modules/doxia-module-markdown/src/test/resources/code.md
new file mode 100644
index 0000000..bed8b8b
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/test/resources/code.md
@@ -0,0 +1,3 @@
+Here is some code:
+
+    mvn clean package
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/image.md b/doxia-modules/doxia-module-markdown/src/test/resources/image.md
new file mode 100644
index 0000000..c75999a
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/test/resources/image.md
@@ -0,0 +1 @@
+This is an image: ![example](http://example).
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/italic.md b/doxia-modules/doxia-module-markdown/src/test/resources/italic.md
new file mode 100644
index 0000000..d591963
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/test/resources/italic.md
@@ -0,0 +1 @@
+*This is italic text.*
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/link.md b/doxia-modules/doxia-module-markdown/src/test/resources/link.md
new file mode 100644
index 0000000..66a3611
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/test/resources/link.md
@@ -0,0 +1 @@
+This is a [link](http://example).
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/list.md b/doxia-modules/doxia-module-markdown/src/test/resources/list.md
new file mode 100644
index 0000000..3a8ef8e
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/test/resources/list.md
@@ -0,0 +1,2 @@
+* List item
+* List item
\ No newline at end of file
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/numbered-list.md b/doxia-modules/doxia-module-markdown/src/test/resources/numbered-list.md
new file mode 100644
index 0000000..fcff093
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/test/resources/numbered-list.md
@@ -0,0 +1,2 @@
+1. List item
+2. List item
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/paragraph.md b/doxia-modules/doxia-module-markdown/src/test/resources/paragraph.md
new file mode 100644
index 0000000..78525e4
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/test/resources/paragraph.md
@@ -0,0 +1 @@
+This is a paragraph.
diff --git a/doxia-modules/doxia-module-markdown/src/test/resources/test.md b/doxia-modules/doxia-module-markdown/src/test/resources/test.md
new file mode 100644
index 0000000..60247bf
--- /dev/null
+++ b/doxia-modules/doxia-module-markdown/src/test/resources/test.md
@@ -0,0 +1,4745 @@
+Markdown test document
+======================
+
+This document aggregates all test documents of the Pegdown library, it was generated this way:
+
+    git clone git://github.com/sirthias/pegdown.git
+    for doc in pegdown/src/test/resources/**/*.md; do
+      echo -e "\n\n$doc\n---\n"  >> test.md
+      cat $doc                   >> test.md
+    done
+
+
+pegdown/src/test/resources/docs-php-markdown-todo/Email_auto_links.md
+---
+
+<michel.fortin@michelf.com>
+
+International domain names: <help@tūdaliņ.lv>
+
+pegdown/src/test/resources/docs-php-markdown-todo/Emphasis.md
+---
+
+Combined emphasis:
+
+1.  ***test test***
+2.  ___test test___
+3.  *test **test***
+4.  **test *test***
+5.  ***test* test**
+6.  ***test** test*
+7.  ***test* test**
+8.  **test *test***
+9.  *test **test***
+10. _test __test___
+11. __test _test___
+12. ___test_ test__
+13. ___test__ test_
+14. ___test_ test__
+15. __test _test___
+16. _test __test___
+
+
+Incorrect nesting:
+
+1.  *test  **test*  test**
+2.  _test  __test_  test__
+3.  **test  *test** test*
+4.  __test  _test__ test_
+5.  *test   *test*  test*
+6.  _test   _test_  test_
+7.  **test **test** test**
+8.  __test __test__ test__
+
+
+
+No emphasis:
+
+1.  test*  test  *test
+2.  test** test **test
+3.  test_  test  _test
+4.  test__ test __test
+
+
+
+Middle-word emphasis (asterisks):
+
+1.  *a*b
+2.   a*b*
+3.   a*b*c
+4. **a**b
+5.   a**b**
+6.   a**b**c
+
+
+Middle-word emphasis (underscore):
+
+1.  _a_b
+2.   a_b_
+3.   a_b_c
+4. __a__b
+5.   a__b__
+6.   a__b__c
+
+my_precious_file.txt
+
+
+## Tricky Cases
+
+E**. **Test** TestTestTest
+
+E**. **Test** Test Test Test
+
+
+pegdown/src/test/resources/docs-php-markdown-todo/Inline_HTML_(Span).md
+---
+
+<abbr title="` **Attribute Content Is Not A Code Span** `">ACINACS</abbr>
+
+<abbr title="`first backtick!">SB</abbr>
+<abbr title="`second backtick!">SB</abbr>
+
+pegdown/src/test/resources/docs-php-markdown-todo/Ins_and_del.md
+---
+
+Here is a block tag ins:
+
+<ins>
+<p>Some text</p>
+</ins>
+
+<ins>And here it is inside a paragraph.</ins>
+
+And here it is <ins>in the middle of</ins> a paragraph.
+
+<del>
+<p>Some text</p>
+</del>
+
+<del>And here is ins as a paragraph.</del>
+
+And here it is <del>in the middle of</del> a paragraph.
+
+
+pegdown/src/test/resources/docs-php-markdown-todo/Links_inline_style.md
+---
+
+[silly URL w/ angle brackets](<?}]*+|&)>).
+
+
+pegdown/src/test/resources/docs-php-markdown-todo/Nesting.md
+---
+
+Valid nesting:
+
+**[Link](url)**
+
+[**Link**](url)
+
+**[**Link**](url)**
+
+
+pegdown/src/test/resources/docs-php-markdown-todo/Parens_in_URL.md
+---
+
+[Inline link 1 with parens](/url\(test\) "title").
+
+[Inline link 2 with parens](</url\(test\)> "title").
+
+[Inline link 3 with non-escaped parens](/url(test) "title").
+
+[Inline link 4 with non-escaped parens](</url(test)> "title").
+
+[Reference link 1 with parens][1].
+
+[Reference link 2 with parens][2].
+
+  [1]: /url(test) "title"
+  [2]: </url(test)> "title"
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/auto_link.md
+---
+
+I can has autolink? <http://icanhascheeseburger.com>
+
+Ask garfield: <garfield@example.com>
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/auto_link_safe_mode.md
+---
+
+I can has autolink? <http://icanhascheeseburger.com>
+
+Ask garfield: <garfield@example.com>
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/basic_safe_mode_escape.md
+---
+
+blah <img src="dangerous"/> blah
+
+<div>yowzer!</div>
+
+blah
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/basic_safe_mode.md
+---
+
+blah <img src="dangerous"/> blah
+
+<div>yowzer!</div>
+
+blah
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/blockquote.md
+---
+
+[Trent wrote]
+> no way
+
+[Jeff wrote]
+> way
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/blockquote_with_pre.md
+---
+
+> Markdown indents blockquotes a couple of spaces
+> necessitating some tweaks for pre-blocks in that
+> blockquote:
+>
+>     here is a check
+>     for that
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/codeblock.md
+---
+
+    some code
+
+some 'splaining
+
+    some more code
+    2 > 1
+
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/code_block_with_tabs.md
+---
+
+Test with tabs for `_Detab`:
+
+	Code	'block'	with	some	"tabs"	and	"quotes"
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/code_safe_emphasis.md
+---
+
+This is *italic* and this is **bold**.
+This is NOT _italic_ and this is __bold__ because --code-safe is turned on.
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/codespans.md
+---
+
+`This` is a code span.
+And ``This is one with an `embedded backtick` ``.
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/codespans_safe_mode.md
+---
+
+`This` is a code span.
+And ``This is one with an `embedded backtick` ``.
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/emacs_head_vars.md
+---
+
+<!-- -*- markdown-extras: code-friendly -*- -->
+
+This sentence talks about the Python __init__ method, which I'd rather not be
+interpreted as Markdown's strong.
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/emacs_tail_vars.md
+---
+
+This sentence talks about the Python __init__ method, which I'd rather not be
+interpreted as Markdown's strong.
+
+<!--
+  Local Variables:
+  markdown-extras: code-friendly
+  End:
+  -->
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/emphasis.md
+---
+
+This is *italic* and this is **bold**.
+This is also _italic_ and this is __bold__.
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/escapes.md
+---
+
+\*\*don't shout\*\*
+
+\*don't emphasize\*
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/footnotes_letters.md
+---
+
+This is a para with a footnote.[^foo]
+
+This is another para with a footnote[^hyphen-ated] in it. Actually it has two[^Capital] of
+them.
+
+
+[^foo]: Here is the body of the first footnote.
+
+[^hyphen-ated]: And of the second footnote.
+
+    This one has multiple paragraphs.
+
+[^Capital]:
+    Here is a footnote body that starts on next line.
+
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/footnotes_markup.md
+---
+
+This is a para with a footnote.[^1]
+
+This is another para with a footnote.[^2]
+
+[^1]: And the **body** of the footnote has `markup`. For example,
+    a [link to digg](http://digg.com). And some code:
+
+        print "Hello, World!"
+
+[^2]: This body has markup too, *but* doesn't end with a code block.
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/footnotes.md
+---
+
+This is a para with a footnote.[^1]
+
+This is another para with a footnote[^2] in it. Actually it has two[^3] of
+them. No, three[^4].
+
+
+[^1]: Here is the body of the first footnote.
+
+[^2]: And of the second footnote.
+
+    This one has multiple paragraphs.
+
+[^3]:
+    Here is a footnote body that starts on next line.
+
+[^4]: quickie "that looks like a link ref if not careful"
+
+
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/footnotes_safe_mode_escape.md
+---
+
+This is a para with a footnote.[^1]
+
+[^1]: Here is the <em>body</em> of <span class="yo">the</span> footnote.
+
+    <div class="blah">And here is the second para of the footnote.</div>
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/hr.md
+---
+
+Dashes:
+
+---
+
+ ---
+
+  ---
+
+   ---
+
+	---
+
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/img_in_link.md
+---
+
+This example from
+<http://orestis.gr/en/blog/2007/05/28/python-markdown-problems/>:
+
+[![the google logo][logo]][google]
+[logo]: http://www.google.com/images/logo.gif
+[google]: http://www.google.com/ "click to visit Google.com"
+
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/inline_links.md
+---
+
+an inline [link](/url/)
+
+a [link "with" title](/url/ "title")
+
+an inline ![image link](/url/)
+
+an ![image "with" title](/url/ "title")
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/issue2_safe_mode_borks_markup.md
+---
+
+## Heading 2
+
+blah <script>alert('this should be removed')</script> **blah**
+
+<script>alert('as should this')</script>
+
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/link_defn_alt_title_delims.md
+---
+
+Alternative delimiters for [link definitions][link1] are allowed -- as of
+Markdown 1.0.2, I think. Hence, [this link][link2] and [this link][link3] work
+too.
+
+[link1]: http://daringfireball.net/projects/markdown/syntax#link "link syntax"
+[link2]: http://daringfireball.net/projects/markdown/syntax#link 'link syntax'
+[link3]: http://daringfireball.net/projects/markdown/syntax#link (link syntax)
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/link_patterns_double_hit.md
+---
+
+There once was a Mozilla bug 123 and a Komodo bug 123.
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/link_patterns_edge_cases.md
+---
+
+Blah 123 becomes a line with two underscores.
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/link_patterns.md
+---
+
+Recipe 123 and Komodo bug 234 are related.
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/lists.md
+---
+
+count:
+
+* one
+* two
+* three
+
+count in spanish:
+
+1. uno
+2. dos
+3. tres
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/mismatched_footnotes.md
+---
+
+This is sentence has a footnote foo[^foo] and whamo[^whamo].
+
+This is another para with a numbered footnote[^6].
+
+
+[^foo]: Here is the body of the footnote foo.
+[^bar]: Here is the body of the footnote bar.
+[^6]: Here is the body of the footnote 6.
+
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/missing_link_defn.md
+---
+
+
+This is a [missing link][missing] and a [used link][used].
+
+
+[used]: http://foo.com
+[unused]: http://foo.com
+
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/nested_list.md
+---
+
+shopping list:
+
+- veggies
+    + carrots
+    + lettuce
+- fruits
+    + oranges
+    + apples
+    + *peaches*
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/nested_list_safe_mode.md
+---
+
+shopping list:
+
+- veggies
+    + carrots
+    + lettuce
+- fruits
+    + oranges
+    + apples
+    + *peaches*
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/parens_in_url_4.md
+---
+
+[Inline link 4 with non-escaped parens](</url(test)> "title").
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/raw_html.md
+---
+
+
+Hi, <span foo="*bar*">*there*</span>. <!-- *blah* --> blah
+
+<div>
+    **ack**
+</div>
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/ref_links.md
+---
+
+[Google][] is fast ![star][].
+
+[google]: http://www.google.com/
+[star]: /img/star.png
+
+
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/sublist-para.md
+---
+
+Some quick thoughts from a coder's perspective:
+
+- The source will be available in a Mercurial ...
+
+- Komodo is a Mozilla-based application...
+
+  - Get a slightly tweaked mozilla build (C++, JavaScript, XUL).
+  - Get a slightly tweaks Python build (C).
+  - Add a bunch of core logic (Python)...
+  - Add Komodo chrome (XUL, JavaScript, CSS, DTDs).
+
+  What this means is that work on and add significant functionality...
+
+- Komodo uses the same extension mechanisms as Firefox...
+
+- Komodo builds and runs on Windows, Linux and ...
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/syntax_color.md
+---
+
+Here is some sample code:
+
+    :::python
+    import sys
+    def main(argv=sys.argv):
+        logging.basicConfig()
+        log.info('hi')
+
+and:
+
+    :::ruby
+    use 'zlib'
+    sub main(argv)
+        puts 'hi'
+    end
+
+
+pegdown/src/test/resources/docs-pythonmarkdown2/underline_in_autolink.md
+---
+
+Eric wrote up a (long) intro to writing UDL definitions a while back on
+his blog: <http://blogs.activestate.com/ericp/2007/01/kid_adding_a_ne.html>
+
+
+pegdown/src/test/resources/MarkdownTest103/Amps and angle encoding.md
+---
+
+AT&T has an ampersand in their name.
+
+AT&amp;T is another way to write it.
+
+This & that.
+
+4 < 5.
+
+6 > 5.
+
+Here's a [link] [1] with an ampersand in the URL.
+
+Here's a link with an amersand in the link text: [AT&T] [2].
+
+Here's an inline [link](/script?foo=1&bar=2).
+
+Here's an inline [link](</script?foo=1&bar=2>).
+
+
+[1]: http://example.com/?foo=1&bar=2
+[2]: http://att.com/  "AT&T"
+
+
+pegdown/src/test/resources/MarkdownTest103/Auto links.md
+---
+
+Link: <http://example.com/>.
+
+With an ampersand: <http://example.com/?foo=1&bar=2>
+
+* In a list?
+* <http://example.com/>
+* It should.
+
+> Blockquoted: <http://example.com/>
+
+Auto-links should not occur here: `<http://example.com/>`
+
+	or here: <http://example.com/>
+
+pegdown/src/test/resources/MarkdownTest103/Backslash escapes.md
+---
+
+These should all get escaped:
+
+Backslash: \\
+
+Backtick: \`
+
+Asterisk: \*
+
+Underscore: \_
+
+Left brace: \{
+
+Right brace: \}
+
+Left bracket: \[
+
+Right bracket: \]
+
+Left paren: \(
+
+Right paren: \)
+
+Greater-than: \>
+
+Hash: \#
+
+Period: \.
+
+Bang: \!
+
+Plus: \+
+
+Minus: \-
+
+
+
+These should not, because they occur within a code block:
+
+	Backslash: \\
+
+	Backtick: \`
+
+	Asterisk: \*
+
+	Underscore: \_
+
+	Left brace: \{
+
+	Right brace: \}
+
+	Left bracket: \[
+
+	Right bracket: \]
+
+	Left paren: \(
+
+	Right paren: \)
+
+	Greater-than: \>
+
+	Hash: \#
+
+	Period: \.
+
+	Bang: \!
+
+	Plus: \+
+
+	Minus: \-
+
+
+Nor should these, which occur in code spans:
+
+Backslash: `\\`
+
+Backtick: `` \` ``
+
+Asterisk: `\*`
+
+Underscore: `\_`
+
+Left brace: `\{`
+
+Right brace: `\}`
+
+Left bracket: `\[`
+
+Right bracket: `\]`
+
+Left paren: `\(`
+
+Right paren: `\)`
+
+Greater-than: `\>`
+
+Hash: `\#`
+
+Period: `\.`
+
+Bang: `\!`
+
+Plus: `\+`
+
+Minus: `\-`
+
+
+These should get escaped, even though they're matching pairs for
+other Markdown constructs:
+
+\*asterisks\*
+
+\_underscores\_
+
+\`backticks\`
+
+This is a code span with a literal backslash-backtick sequence: `` \` ``
+
+This is a tag with unescaped backticks <span attr='`ticks`'>bar</span>.
+
+This is a tag with backslashes <span attr='\\backslashes\\'>bar</span>.
+
+
+pegdown/src/test/resources/MarkdownTest103/Blockquotes with code blocks.md
+---
+
+> Example:
+>
+>     sub status {
+>         print "working";
+>     }
+>
+> Or:
+>
+>     sub status {
+>         return "working";
+>     }
+
+
+pegdown/src/test/resources/MarkdownTest103/Code Blocks.md
+---
+
+	code block on the first line
+
+Regular text.
+
+    code block indented by spaces
+
+Regular text.
+
+	the lines in this block
+	all contain trailing spaces
+
+Regular Text.
+
+	code block on the last line
+
+pegdown/src/test/resources/MarkdownTest103/Code Spans.md
+---
+
+`<test a="` content of attribute `">`
+
+Fix for backticks within HTML tag: <span attr='`ticks`'>like this</span>
+
+Here's how you put `` `backticks` `` in a code span.
+
+
+
+pegdown/src/test/resources/MarkdownTest103/Hard-wrapped paragraphs with list-like lines.md
+---
+
+In Markdown 1.0.0 and earlier. Version
+8. This line turns into a list item.
+Because a hard-wrapped line in the
+middle of a paragraph looked like a
+list item.
+
+Here's one with a bullet.
+* criminey.
+
+
+pegdown/src/test/resources/MarkdownTest103/Horizontal rules.md
+---
+
+Dashes:
+
+---
+
+ ---
+
+  ---
+
+   ---
+
+	---
+
+- - -
+
+ - - -
+
+  - - -
+
+   - - -
+
+	- - -
+
+
+Asterisks:
+
+***
+
+ ***
+
+  ***
+
+   ***
+
+	***
+
+* * *
+
+ * * *
+
+  * * *
+
+   * * *
+
+	* * *
+
+
+Underscores:
+
+___
+
+ ___
+
+  ___
+
+   ___
+
+    ___
+
+_ _ _
+
+ _ _ _
+
+  _ _ _
+
+   _ _ _
+
+    _ _ _
+
+
+pegdown/src/test/resources/MarkdownTest103/Inline HTML (Advanced).md
+---
+
+Simple block on one line:
+
+<div>foo</div>
+
+And nested without indentation:
+
+<div>
+<div>
+<div>
+foo
+</div>
+<div style=">"/>
+</div>
+<div>bar</div>
+</div>
+
+
+pegdown/src/test/resources/MarkdownTest103/Inline HTML comments.md
+---
+
+Paragraph one.
+
+<!-- This is a simple comment -->
+
+<!--
+	This is another comment.
+-->
+
+Paragraph two.
+
+The end.
+
+
+pegdown/src/test/resources/MarkdownTest103/Inline HTML (Simple).md
+---
+
+Here's a simple block:
+
+<div>
+	foo
+</div>
+
+This should be a code block, though:
+
+	<div>
+		foo
+	</div>
+
+As should this:
+
+	<div>foo</div>
+
+Now, nested:
+
+<div>
+	<div>
+		<div>
+			foo
+		</div>
+	</div>
+</div>
+
+This should just be an HTML comment:
+
+<!-- Comment -->
+
+Multiline:
+
+<!--
+Blah
+Blah
+-->
+
+Code block:
+
+	<!-- Comment -->
+
+Just plain comment, with trailing spaces on the line:
+
+<!-- foo -->
+
+Code:
+
+	<hr />
+
+Hr's:
+
+<hr/>
+
+<hr />
+
+<hr/>
+
+<hr />
+
+<hr class="foo" id="bar" />
+
+<hr class="foo" id="bar"/>
+
+
+pegdown/src/test/resources/MarkdownTest103/Links, inline style.md
+---
+
+Just a [URL](/url/).
+
+[URL and title](/url/ "title").
+
+[URL and title](/url/  "title preceded by two spaces").
+
+[URL and title](/url/	"title preceded by a tab").
+
+[URL and title](/url/ "title has spaces afterward"  ).
+
+
+[Empty]().
+
+
+pegdown/src/test/resources/MarkdownTest103/Links, reference style.md
+---
+
+Foo [bar] [1].
+
+Foo [bar][1].
+
+Foo [bar]
+[1].
+
+[1]: /url/  "Title"
+
+
+With [embedded [brackets]] [b].
+
+
+Indented [once][].
+
+Indented [twice][].
+
+Indented [thrice][].
+
+Indented [four][] times.
+
+ [once]: /url
+
+  [twice]: /url
+
+   [thrice]: /url
+
+    [four]: /url
+
+
+[b]: /url/
+
+* * *
+
+[this] [this] should work
+
+So should [this][this].
+
+And [this] [].
+
+And [this][].
+
+And [this].
+
+But not [that] [].
+
+Nor [that][].
+
+Nor [that].
+
+[Something in brackets like [this][] should work]
+
+[Same with [this].]
+
+In this case, [this](/somethingelse/) points to something else.
+
+Backslashing should suppress \[this] and [this\].
+
+[this]: foo
+
+
+* * *
+
+Here's one where the [link
+breaks] across lines.
+
+Here's another where the [link
+breaks] across lines, but with a line-ending space.
+
+
+[link breaks]: /url/
+
+
+pegdown/src/test/resources/MarkdownTest103/Links, shortcut references.md
+---
+
+This is the [simple case].
+
+[simple case]: /simple
+
+
+
+This one has a [line
+break].
+
+This one has a [line
+break] with a line-ending space.
+
+[line break]: /foo
+
+
+[this] [that] and the [other]
+
+[this]: /this
+[that]: /that
+[other]: /other
+
+
+pegdown/src/test/resources/MarkdownTest103/Literal quotes in titles.md
+---
+
+Foo [bar][].
+
+Foo [bar](/url/ "Title with "quotes" inside").
+
+
+  [bar]: /url/ "Title with "quotes" inside"
+
+
+
+pegdown/src/test/resources/MarkdownTest103/Markdown Documentation - Basics.md
+---
+
+Markdown: Basics
+================
+
+<ul id="ProjectSubmenu">
+    <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+    <li><a class="selected" title="Markdown Basics">Basics</a></li>
+    <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>
+    <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+    <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+
+Getting the Gist of Markdown's Formatting Syntax
+------------------------------------------------
+
+This page offers a brief overview of what it's like to use Markdown.
+The [syntax page] [s] provides complete, detailed documentation for
+every feature, but Markdown should be very easy to pick up simply by
+looking at a few examples of it in action. The examples on this page
+are written in a before/after style, showing example syntax and the
+HTML output produced by Markdown.
+
+It's also helpful to simply try Markdown out; the [Dingus] [d] is a
+web application that allows you type your own Markdown-formatted text
+and translate it to XHTML.
+
+**Note:** This document is itself written using Markdown; you
+can [see the source for it by adding '.text' to the URL] [src].
+
+  [s]: /projects/markdown/syntax  "Markdown Syntax"
+  [d]: /projects/markdown/dingus  "Markdown Dingus"
+  [src]: /projects/markdown/basics.text
+
+
+## Paragraphs, Headers, Blockquotes ##
+
+A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.
+
+Markdown offers two styles of headers: *Setext* and *atx*.
+Setext-style headers for `<h1>` and `<h2>` are created by
+"underlining" with equal signs (`=`) and hyphens (`-`), respectively.
+To create an atx-style header, you put 1-6 hash marks (`#`) at the
+beginning of the line -- the number of hashes equals the resulting
+HTML header level.
+
+Blockquotes are indicated using email-style '`>`' angle brackets.
+
+Markdown:
+
+    A First Level Header
+    ====================
+
+    A Second Level Header
+    ---------------------
+
+    Now is the time for all good men to come to
+    the aid of their country. This is just a
+    regular paragraph.
+
+    The quick brown fox jumped over the lazy
+    dog's back.
+
+    ### Header 3
+
+    > This is a blockquote.
+    >
+    > This is the second paragraph in the blockquote.
+    >
+    > ## This is an H2 in a blockquote
+
+
+Output:
+
+    <h1>A First Level Header</h1>
+
+    <h2>A Second Level Header</h2>
+
+    <p>Now is the time for all good men to come to
+    the aid of their country. This is just a
+    regular paragraph.</p>
+
+    <p>The quick brown fox jumped over the lazy
+    dog's back.</p>
+
+    <h3>Header 3</h3>
+
+    <blockquote>
+        <p>This is a blockquote.</p>
+
+        <p>This is the second paragraph in the blockquote.</p>
+
+        <h2>This is an H2 in a blockquote</h2>
+    </blockquote>
+
+
+
+### Phrase Emphasis ###
+
+Markdown uses asterisks and underscores to indicate spans of emphasis.
+
+Markdown:
+
+    Some of these words *are emphasized*.
+    Some of these words _are emphasized also_.
+
+    Use two asterisks for **strong emphasis**.
+    Or, if you prefer, __use two underscores instead__.
+
+Output:
+
+    <p>Some of these words <em>are emphasized</em>.
+    Some of these words <em>are emphasized also</em>.</p>
+
+    <p>Use two asterisks for <strong>strong emphasis</strong>.
+    Or, if you prefer, <strong>use two underscores instead</strong>.</p>
+
+
+
+## Lists ##
+
+Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,
+`+`, and `-`) as list markers. These three markers are
+interchangable; this:
+
+    *   Candy.
+    *   Gum.
+    *   Booze.
+
+this:
+
+    +   Candy.
+    +   Gum.
+    +   Booze.
+
+and this:
+
+    -   Candy.
+    -   Gum.
+    -   Booze.
+
+all produce the same output:
+
+    <ul>
+    <li>Candy.</li>
+    <li>Gum.</li>
+    <li>Booze.</li>
+    </ul>
+
+Ordered (numbered) lists use regular numbers, followed by periods, as
+list markers:
+
+    1.  Red
+    2.  Green
+    3.  Blue
+
+Output:
+
+    <ol>
+    <li>Red</li>
+    <li>Green</li>
+    <li>Blue</li>
+    </ol>
+
+If you put blank lines between items, you'll get `<p>` tags for the
+list item text. You can create multi-paragraph list items by indenting
+the paragraphs by 4 spaces or 1 tab:
+
+    *   A list item.
+
+        With multiple paragraphs.
+
+    *   Another item in the list.
+
+Output:
+
+    <ul>
+    <li><p>A list item.</p>
+    <p>With multiple paragraphs.</p></li>
+    <li><p>Another item in the list.</p></li>
+    </ul>
+
+
+
+### Links ###
+
+Markdown supports two styles for creating links: *inline* and
+*reference*. With both styles, you use square brackets to delimit the
+text you want to turn into a link.
+
+Inline-style links use parentheses immediately after the link text.
+For example:
+
+    This is an [example link](http://example.com/).
+
+Output:
+
+    <p>This is an <a href="http://example.com/">
+    example link</a>.</p>
+
+Optionally, you may include a title attribute in the parentheses:
+
+    This is an [example link](http://example.com/ "With a Title").
+
+Output:
+
+    <p>This is an <a href="http://example.com/" title="With a Title">
+    example link</a>.</p>
+
+Reference-style links allow you to refer to your links by names, which
+you define elsewhere in your document:
+
+    I get 10 times more traffic from [Google][1] than from
+    [Yahoo][2] or [MSN][3].
+
+    [1]: http://google.com/        "Google"
+    [2]: http://search.yahoo.com/  "Yahoo Search"
+    [3]: http://search.msn.com/    "MSN Search"
+
+Output:
+
+    <p>I get 10 times more traffic from <a href="http://google.com/"
+    title="Google">Google</a> than from <a href="http://search.yahoo.com/"
+    title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"
+    title="MSN Search">MSN</a>.</p>
+
+The title attribute is optional. Link names may contain letters,
+numbers and spaces, but are *not* case sensitive:
+
+    I start my morning with a cup of coffee and
+    [The New York Times][NY Times].
+
+    [ny times]: http://www.nytimes.com/
+
+Output:
+
+    <p>I start my morning with a cup of coffee and
+    <a href="http://www.nytimes.com/">The New York Times</a>.</p>
+
+
+### Images ###
+
+Image syntax is very much like link syntax.
+
+Inline (titles are optional):
+
+    ![alt text](/path/to/img.jpg "Title")
+
+Reference-style:
+
+    ![alt text][id]
+
+    [id]: /path/to/img.jpg "Title"
+
+Both of the above examples produce the same output:
+
+    <img src="/path/to/img.jpg" alt="alt text" title="Title" />
+
+
+
+### Code ###
+
+In a regular paragraph, you can create code span by wrapping text in
+backtick quotes. Any ampersands (`&`) and angle brackets (`<` or
+`>`) will automatically be translated into HTML entities. This makes
+it easy to use Markdown to write about HTML example code:
+
+    I strongly recommend against using any `<blink>` tags.
+
+    I wish SmartyPants used named entities like `&mdash;`
+    instead of decimal-encoded entites like `&#8212;`.
+
+Output:
+
+    <p>I strongly recommend against using any
+    <code>&lt;blink&gt;</code> tags.</p>
+
+    <p>I wish SmartyPants used named entities like
+    <code>&amp;mdash;</code> instead of decimal-encoded
+    entites like <code>&amp;#8212;</code>.</p>
+
+
+To specify an entire block of pre-formatted code, indent every line of
+the block by 4 spaces or 1 tab. Just like with code spans, `&`, `<`,
+and `>` characters will be escaped automatically.
+
+Markdown:
+
+    If you want your page to validate under XHTML 1.0 Strict,
+    you've got to put paragraph tags in your blockquotes:
+
+        <blockquote>
+            <p>For example.</p>
+        </blockquote>
+
+Output:
+
+    <p>If you want your page to validate under XHTML 1.0 Strict,
+    you've got to put paragraph tags in your blockquotes:</p>
+
+    <pre><code>&lt;blockquote&gt;
+        &lt;p&gt;For example.&lt;/p&gt;
+    &lt;/blockquote&gt;
+    </code></pre>
+
+
+pegdown/src/test/resources/MarkdownTest103/Markdown Documentation - Syntax.md
+---
+
+Markdown: Syntax
+================
+
+<ul id="ProjectSubmenu">
+    <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+    <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
+    <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
+    <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+    <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+
+*   [Overview](#overview)
+    *   [Philosophy](#philosophy)
+    *   [Inline HTML](#html)
+    *   [Automatic Escaping for Special Characters](#autoescape)
+*   [Block Elements](#block)
+    *   [Paragraphs and Line Breaks](#p)
+    *   [Headers](#header)
+    *   [Blockquotes](#blockquote)
+    *   [Lists](#list)
+    *   [Code Blocks](#precode)
+    *   [Horizontal Rules](#hr)
+*   [Span Elements](#span)
+    *   [Links](#link)
+    *   [Emphasis](#em)
+    *   [Code](#code)
+    *   [Images](#img)
+*   [Miscellaneous](#misc)
+    *   [Backslash Escapes](#backslash)
+    *   [Automatic Links](#autolink)
+
+
+**Note:** This document is itself written using Markdown; you
+can [see the source for it by adding '.text' to the URL][src].
+
+  [src]: /projects/markdown/syntax.text
+
+* * *
+
+<h2 id="overview">Overview</h2>
+
+<h3 id="philosophy">Philosophy</h3>
+
+Markdown is intended to be as easy-to-read and easy-to-write as is feasible.
+
+Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4],
+[Grutatext] [5], and [EtText] [6] -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.
+
+  [1]: http://docutils.sourceforge.net/mirror/setext.html
+  [2]: http://www.aaronsw.com/2002/atx/
+  [3]: http://textism.com/tools/textile/
+  [4]: http://docutils.sourceforge.net/rst.html
+  [5]: http://www.triptico.com/software/grutatxt.html
+  [6]: http://ettext.taint.org/doc/
+
+To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like \*emphasis\*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.
+
+
+
+<h3 id="html">Inline HTML</h3>
+
+Markdown's syntax is intended for one purpose: to be used as a
+format for *writing* for the web.
+
+Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is *not* to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a *publishing* format; Markdown is a *writing*
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.
+
+For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.
+
+The only restrictions are that block-level HTML elements -- e.g. `<div>`,
+`<table>`, `<pre>`, `<p>`, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) `<p>` tags around HTML block-level tags.
+
+For example, to add an HTML table to a Markdown article:
+
+    This is a regular paragraph.
+
+    <table>
+        <tr>
+            <td>Foo</td>
+        </tr>
+    </table>
+
+    This is another regular paragraph.
+
+Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an
+HTML block.
+
+Span-level HTML tags -- e.g. `<span>`, `<cite>`, or `<del>` -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML `<a>` or `<img>` tags instead of Markdown's
+link or image syntax, go right ahead.
+
+Unlike block-level HTML tags, Markdown syntax *is* processed within
+span-level tags.
+
+
+<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
+
+In HTML, there are two characters that demand special treatment: `<`
+and `&`. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. `&lt;`, and
+`&amp;`.
+
+Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&T', you need to write '`AT&amp;T`'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:
+
+    http://images.google.com/images?num=30&q=larry+bird
+
+you need to encode the URL as:
+
+    http://images.google.com/images?num=30&amp;q=larry+bird
+
+in your anchor tag `href` attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.
+
+Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into `&amp;`.
+
+So, if you want to include a copyright symbol in your article, you can write:
+
+    &copy;
+
+and Markdown will leave it alone. But if you write:
+
+    AT&T
+
+Markdown will translate it to:
+
+    AT&amp;T
+
+Similarly, because Markdown supports [inline HTML](#html), if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:
+
+    4 < 5
+
+Markdown will translate it to:
+
+    4 &lt; 5
+
+However, inside Markdown code spans and blocks, angle brackets and
+ampersands are *always* encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single `<`
+and `&` in your example code needs to be escaped.)
+
+
+* * *
+
+
+<h2 id="block">Block Elements</h2>
+
+
+<h3 id="p">Paragraphs and Line Breaks</h3>
+
+A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.
+
+The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a `<br />` tag.
+
+When you *do* want to insert a `<br />` break tag using Markdown, you
+end a line with two or more spaces, then type return.
+
+Yes, this takes a tad more effort to create a `<br />`, but a simplistic
+"every line break is a `<br />`" rule wouldn't work for Markdown.
+Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l]
+work best -- and look better -- when you format them with hard breaks.
+
+  [bq]: #blockquote
+  [l]:  #list
+
+
+
+<h3 id="header">Headers</h3>
+
+Markdown supports two styles of headers, [Setext] [1] and [atx] [2].
+
+Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:
+
+    This is an H1
+    =============
+
+    This is an H2
+    -------------
+
+Any number of underlining `=`'s or `-`'s will work.
+
+Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:
+
+    # This is an H1
+
+    ## This is an H2
+
+    ###### This is an H6
+
+Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :
+
+    # This is an H1 #
+
+    ## This is an H2 ##
+
+    ### This is an H3 ######
+
+
+<h3 id="blockquote">Blockquotes</h3>
+
+Markdown uses email-style `>` characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a `>` before every line:
+
+    > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+    > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+    > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+    >
+    > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+    > id sem consectetuer libero luctus adipiscing.
+
+Markdown allows you to be lazy and only put the `>` before the first
+line of a hard-wrapped paragraph:
+
+    > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+    consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+    Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+    > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+    id sem consectetuer libero luctus adipiscing.
+
+Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of `>`:
+
+    > This is the first level of quoting.
+    >
+    > > This is nested blockquote.
+    >
+    > Back to the first level.
+
+Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:
+
+	> ## This is a header.
+	>
+	> 1.   This is the first list item.
+	> 2.   This is the second list item.
+	>
+	> Here's some example code:
+	>
+	>     return shell_exec("echo $input | $markdown_script");
+
+Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.
+
+
+<h3 id="list">Lists</h3>
+
+Markdown supports ordered (numbered) and unordered (bulleted) lists.
+
+Unordered lists use asterisks, pluses, and hyphens -- interchangably
+-- as list markers:
+
+    *   Red
+    *   Green
+    *   Blue
+
+is equivalent to:
+
+    +   Red
+    +   Green
+    +   Blue
+
+and:
+
+    -   Red
+    -   Green
+    -   Blue
+
+Ordered lists use numbers followed by periods:
+
+    1.  Bird
+    2.  McHale
+    3.  Parish
+
+It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:
+
+    <ol>
+    <li>Bird</li>
+    <li>McHale</li>
+    <li>Parish</li>
+    </ol>
+
+If you instead wrote the list in Markdown like this:
+
+    1.  Bird
+    1.  McHale
+    1.  Parish
+
+or even:
+
+    3. Bird
+    1. McHale
+    8. Parish
+
+you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.
+
+If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.
+
+List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.
+
+To make lists look nice, you can wrap items with hanging indents:
+
+    *   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+        Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+        viverra nec, fringilla in, laoreet vitae, risus.
+    *   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+        Suspendisse id sem consectetuer libero luctus adipiscing.
+
+But if you want to be lazy, you don't have to:
+
+    *   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+    viverra nec, fringilla in, laoreet vitae, risus.
+    *   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+    Suspendisse id sem consectetuer libero luctus adipiscing.
+
+If list items are separated by blank lines, Markdown will wrap the
+items in `<p>` tags in the HTML output. For example, this input:
+
+    *   Bird
+    *   Magic
+
+will turn into:
+
+    <ul>
+    <li>Bird</li>
+    <li>Magic</li>
+    </ul>
+
+But this:
+
+    *   Bird
+
+    *   Magic
+
+will turn into:
+
+    <ul>
+    <li><p>Bird</p></li>
+    <li><p>Magic</p></li>
+    </ul>
+
+List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be intended by either 4 spaces
+or one tab:
+
+    1.  This is a list item with two paragraphs. Lorem ipsum dolor
+        sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+        mi posuere lectus.
+
+        Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+        vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+        sit amet velit.
+
+    2.  Suspendisse id sem consectetuer libero luctus adipiscing.
+
+It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:
+
+    *   This is a list item with two paragraphs.
+
+        This is the second paragraph in the list item. You're
+    only required to indent the first line. Lorem ipsum dolor
+    sit amet, consectetuer adipiscing elit.
+
+    *   Another item in the same list.
+
+To put a blockquote within a list item, the blockquote's `>`
+delimiters need to be indented:
+
+    *   A list item with a blockquote:
+
+        > This is a blockquote
+        > inside a list item.
+
+To put a code block within a list item, the code block needs
+to be indented *twice* -- 8 spaces or two tabs:
+
+    *   A list item with a code block:
+
+            <code goes here>
+
+
+It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:
+
+    1986. What a great season.
+
+In other words, a *number-period-space* sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:
+
+    1986\. What a great season.
+
+
+
+<h3 id="precode">Code Blocks</h3>
+
+Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both `<pre>` and `<code>` tags.
+
+To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:
+
+    This is a normal paragraph:
+
+        This is a code block.
+
+Markdown will generate:
+
+    <p>This is a normal paragraph:</p>
+
+    <pre><code>This is a code block.
+    </code></pre>
+
+One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:
+
+    Here is an example of AppleScript:
+
+        tell application "Foo"
+            beep
+        end tell
+
+will turn into:
+
+    <p>Here is an example of AppleScript:</p>
+
+    <pre><code>tell application "Foo"
+        beep
+    end tell
+    </code></pre>
+
+A code block continues until it reaches a line that is not indented
+(or the end of the article).
+
+Within a code block, ampersands (`&`) and angle brackets (`<` and `>`)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:
+
+        <div class="footer">
+            &copy; 2004 Foo Corporation
+        </div>
+
+will turn into:
+
+    <pre><code>&lt;div class="footer"&gt;
+        &amp;copy; 2004 Foo Corporation
+    &lt;/div&gt;
+    </code></pre>
+
+Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.
+
+
+
+<h3 id="hr">Horizontal Rules</h3>
+
+You can produce a horizontal rule tag (`<hr />`) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:
+
+    * * *
+
+    ***
+
+    *****
+
+    - - -
+
+    ---------------------------------------
+
+	_ _ _
+
+
+* * *
+
+<h2 id="span">Span Elements</h2>
+
+<h3 id="link">Links</h3>
+
+Markdown supports two style of links: *inline* and *reference*.
+
+In both styles, the link text is delimited by [square brackets].
+
+To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an *optional*
+title for the link, surrounded in quotes. For example:
+
+    This is [an example](http://example.com/ "Title") inline link.
+
+    [This link](http://example.net/) has no title attribute.
+
+Will produce:
+
+    <p>This is <a href="http://example.com/" title="Title">
+    an example</a> inline link.</p>
+
+    <p><a href="http://example.net/">This link</a> has no
+    title attribute.</p>
+
+If you're referring to a local resource on the same server, you can
+use relative paths:
+
+    See my [About](/about/) page for details.
+
+Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:
+
+    This is [an example][id] reference-style link.
+
+You can optionally use a space to separate the sets of brackets:
+
+    This is [an example] [id] reference-style link.
+
+Then, anywhere in the document, you define your link label like this,
+on a line by itself:
+
+    [id]: http://example.com/  "Optional Title Here"
+
+That is:
+
+*   Square brackets containing the link identifier (optionally
+    indented from the left margin using up to three spaces);
+*   followed by a colon;
+*   followed by one or more spaces (or tabs);
+*   followed by the URL for the link;
+*   optionally followed by a title attribute for the link, enclosed
+    in double or single quotes.
+
+The link URL may, optionally, be surrounded by angle brackets:
+
+    [id]: <http://example.com/>  "Optional Title Here"
+
+You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:
+
+    [id]: http://example.com/longish/path/to/resource/here
+        "Optional Title Here"
+
+Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.
+
+Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links:
+
+	[link text][a]
+	[link text][A]
+
+are equivalent.
+
+The *implicit link name* shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:
+
+	[Google][]
+
+And then define the link:
+
+	[Google]: http://google.com/
+
+Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:
+
+	Visit [Daring Fireball][] for more information.
+
+And then define the link:
+
+	[Daring Fireball]: http://daringfireball.net/
+
+Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.
+
+Here's an example of reference links in action:
+
+    I get 10 times more traffic from [Google] [1] than from
+    [Yahoo] [2] or [MSN] [3].
+
+      [1]: http://google.com/        "Google"
+      [2]: http://search.yahoo.com/  "Yahoo Search"
+      [3]: http://search.msn.com/    "MSN Search"
+
+Using the implicit link name shortcut, you could instead write:
+
+    I get 10 times more traffic from [Google][] than from
+    [Yahoo][] or [MSN][].
+
+      [google]: http://google.com/        "Google"
+      [yahoo]:  http://search.yahoo.com/  "Yahoo Search"
+      [msn]:    http://search.msn.com/    "MSN Search"
+
+Both of the above examples will produce the following HTML output:
+
+    <p>I get 10 times more traffic from <a href="http://google.com/"
+    title="Google">Google</a> than from
+    <a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
+    or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
+
+For comparison, here is the same paragraph written using
+Markdown's inline link style:
+
+    I get 10 times more traffic from [Google](http://google.com/ "Google")
+    than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+    [MSN](http://search.msn.com/ "MSN Search").
+
+The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.
+
+With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.
+
+
+<h3 id="em">Emphasis</h3>
+
+Markdown treats asterisks (`*`) and underscores (`_`) as indicators of
+emphasis. Text wrapped with one `*` or `_` will be wrapped with an
+HTML `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML
+`<strong>` tag. E.g., this input:
+
+    *single asterisks*
+
+    _single underscores_
+
+    **double asterisks**
+
+    __double underscores__
+
+will produce:
+
+    <em>single asterisks</em>
+
+    <em>single underscores</em>
+
+    <strong>double asterisks</strong>
+
+    <strong>double underscores</strong>
+
+You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.
+
+Emphasis can be used in the middle of a word:
+
+    un*fucking*believable
+
+But if you surround an `*` or `_` with spaces, it'll be treated as a
+literal asterisk or underscore.
+
+To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:
+
+    \*this text is surrounded by literal asterisks\*
+
+
+
+<h3 id="code">Code</h3>
+
+To indicate a span of code, wrap it with backtick quotes (`` ` ``).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:
+
+    Use the `printf()` function.
+
+will produce:
+
+    <p>Use the <code>printf()</code> function.</p>
+
+To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:
+
+    ``There is a literal backtick (`) here.``
+
+which will produce this:
+
+    <p><code>There is a literal backtick (`) here.</code></p>
+
+The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:
+
+	A single backtick in a code span: `` ` ``
+
+	A backtick-delimited string in a code span: `` `foo` ``
+
+will produce:
+
+	<p>A single backtick in a code span: <code>`</code></p>
+
+	<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+
+With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:
+
+    Please don't use any `<blink>` tags.
+
+into:
+
+    <p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
+
+You can write this:
+
+    `&#8212;` is the decimal-encoded equivalent of `&mdash;`.
+
+to produce:
+
+    <p><code>&amp;#8212;</code> is the decimal-encoded
+    equivalent of <code>&amp;mdash;</code>.</p>
+
+
+
+<h3 id="img">Images</h3>
+
+Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.
+
+Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: *inline* and *reference*.
+
+Inline image syntax looks like this:
+
+    ![Alt text](/path/to/img.jpg)
+
+    ![Alt text](/path/to/img.jpg "Optional title")
+
+That is:
+
+*   An exclamation mark: `!`;
+*   followed by a set of square brackets, containing the `alt`
+    attribute text for the image;
+*   followed by a set of parentheses, containing the URL or path to
+    the image, and an optional `title` attribute enclosed in double
+    or single quotes.
+
+Reference-style image syntax looks like this:
+
+    ![Alt text][id]
+
+Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:
+
+    [id]: url/to/image  "Optional title attribute"
+
+As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML `<img>` tags.
+
+
+* * *
+
+
+<h2 id="misc">Miscellaneous</h2>
+
+<h3 id="autolink">Automatic Links</h3>
+
+Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:
+
+    <http://example.com/>
+
+Markdown will turn this into:
+
+    <a href="http://example.com/">http://example.com/</a>
+
+Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:
+
+    <address@example.com>
+
+into something like this:
+
+    <a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
+    &#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
+    &#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
+    &#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
+
+which will render in a browser as a clickable link to "address@example.com".
+
+(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)
+
+
+
+<h3 id="backslash">Backslash Escapes</h3>
+
+Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML `<em>` tag), you can backslashes
+before the asterisks, like this:
+
+    \*literal asterisks\*
+
+Markdown provides backslash escapes for the following characters:
+
+    \   backslash
+    `   backtick
+    *   asterisk
+    _   underscore
+    {}  curly braces
+    []  square brackets
+    ()  parentheses
+    #   hash mark
+	+	plus sign
+	-	minus sign (hyphen)
+    .   dot
+    !   exclamation mark
+
+
+
+pegdown/src/test/resources/MarkdownTest103/Nested blockquotes.md
+---
+
+> foo
+>
+> > bar
+>
+> foo
+
+
+pegdown/src/test/resources/MarkdownTest103/Ordered and unordered lists.md
+---
+
+## Unordered
+
+Asterisks tight:
+
+*	asterisk 1
+*	asterisk 2
+*	asterisk 3
+
+
+Asterisks loose:
+
+*	asterisk 1
+
+*	asterisk 2
+
+*	asterisk 3
+
+* * *
+
+Pluses tight:
+
++	Plus 1
++	Plus 2
++	Plus 3
+
+
+Pluses loose:
+
++	Plus 1
+
++	Plus 2
+
++	Plus 3
+
+* * *
+
+
+Minuses tight:
+
+-	Minus 1
+-	Minus 2
+-	Minus 3
+
+
+Minuses loose:
+
+-	Minus 1
+
+-	Minus 2
+
+-	Minus 3
+
+
+## Ordered
+
+Tight:
+
+1.	First
+2.	Second
+3.	Third
+
+and:
+
+1. One
+2. Two
+3. Three
+
+
+Loose using tabs:
+
+1.	First
+
+2.	Second
+
+3.	Third
+
+and using spaces:
+
+1. One
+
+2. Two
+
+3. Three
+
+Multiple paragraphs:
+
+1.	Item 1, graf one.
+
+	Item 2. graf two. The quick brown fox jumped over the lazy dog's
+	back.
+
+2.	Item 2.
+
+3.	Item 3.
+
+
+
+## Nested
+
+*	Tab
+	*	Tab
+		*	Tab
+
+Here's another:
+
+1. First
+2. Second:
+	* Fee
+	* Fie
+	* Foe
+3. Third
+
+Same thing but with paragraphs:
+
+1. First
+
+2. Second:
+	* Fee
+	* Fie
+	* Foe
+
+3. Third
+
+
+This was an error in Markdown 1.0.1:
+
+*	this
+
+	*	sub
+
+	that
+
+
+pegdown/src/test/resources/MarkdownTest103/Strong and em together.md
+---
+
+***This is strong and em.***
+
+So is ***this*** word.
+
+___This is strong and em.___
+
+So is ___this___ word.
+
+
+pegdown/src/test/resources/MarkdownTest103/Tabs.md
+---
+
++	this is a list item
+	indented with tabs
+
++   this is a list item
+    indented with spaces
+
+Code:
+
+	this code block is indented by one tab
+
+And:
+
+		this code block is indented by two tabs
+
+And:
+
+	+	this is an example list item
+		indented with tabs
+
+	+   this is an example list item
+	    indented with spaces
+
+
+pegdown/src/test/resources/MarkdownTest103/Tidyness.md
+---
+
+> A list within a blockquote:
+>
+> *	asterisk 1
+> *	asterisk 2
+> *	asterisk 3
+
+
+pegdown/src/test/resources/Maruku/abbreviations.md
+---
+
+
+The HTML specification is maintained by the W3C.
+
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+
+
+
+Operation Tigra Genesis is going well.
+
+*[Tigra Genesis]:
+
+
+pegdown/src/test/resources/Maruku/alt.md
+---
+
+ ![bar](/foo.jpg)
+
+
+
+
+pegdown/src/test/resources/Maruku/blank.md
+---
+
+
+Linea 1
+
+Linea 2
+
+
+pegdown/src/test/resources/Maruku/blanks_in_code.md
+---
+
+This block is composed of three lines:
+
+	one
+
+	three
+
+This block is composed of 5
+
+
+	one
+
+
+	four
+
+
+This block is composed of 2
+
+
+	two
+
+
+
+
+
+pegdown/src/test/resources/Maruku/bug_def.md
+---
+
+[test][]:
+
+
+
+pegdown/src/test/resources/Maruku/bug_table.md
+---
+
+
+
+hello
+{: summary="Table summary" .class1 style="color:red"}
+
+h         | h
+----------|--
+{:t}  c1  | c2
+{: summary="Table summary" .class1 style="color:red"}
+
+
+
+{:t: scope="row"}
+
+
+pegdown/src/test/resources/Maruku/code2.md
+---
+
+> Code
+>
+>     Ciao
+
+
+pegdown/src/test/resources/Maruku/code3.md
+---
+
+
+This is code (4 spaces):
+
+    Code
+This is not code
+
+    Code
+
+This is code (1 tab):
+
+	Code
+This is not code
+
+	Code
+
+
+
+
+
+pegdown/src/test/resources/Maruku/code.md
+---
+
+Here is an example of AppleScript:
+
+    tell application "Foo"
+        beep
+    end tell
+    	tab
+
+
+
+pegdown/src/test/resources/Maruku/data_loss.md
+---
+
+1. abcd
+efgh
+ijkl
+
+
+
+pegdown/src/test/resources/Maruku/easy.md
+---
+
+*Hello!* how are **you**?
+
+
+pegdown/src/test/resources/Maruku/email.md
+---
+
+
+
+This is an email address: <andrea@invalid.it>
+
+
+
+pegdown/src/test/resources/Maruku/entities.md
+---
+
+Maruku translates HTML entities to the equivalent in LaTeX:
+
+Entity      | Result
+------------|----------
+`&copy;`    |  &copy;
+`&pound;`   |  &pound;
+`a&nbsp;b`  |  a&nbsp;b
+`&lambda;`  |  &lambda;
+`&mdash;`   |  &mdash;
+
+
+Entity-substitution does not happen in code blocks or inline code.
+
+The following should not be translated:
+
+	&copy;
+
+It should read just like this: `&copy;`.
+
+
+
+
+pegdown/src/test/resources/Maruku/escaping.md
+---
+
+ Hello: ! \! \` \{ \} \[ \] \( \) \# \. \! * \* *
+
+
+Ora, *emphasis*, **bold**, * <- due asterischi-> * , un underscore-> _ , _emphasis_,
+ incre*dible*e!
+
+This is ``Code with a special: -> ` <- ``(after)
+
+`Start ` of paragraph
+
+End of `paragraph `
+
+
+pegdown/src/test/resources/Maruku/extra_dl.md
+---
+
+CSS: style.css
+
+
+Apple
+:   Pomaceous fruit of plants of the genus Malus in
+    the family Rosaceae.
+
+Orange
+:   The fruit of an evergreen tree of the genus Citrus.
+
+
+
+pegdown/src/test/resources/Maruku/extra_header_id.md
+---
+
+Header 1            {#header1}
+========
+
+Header 2            {#header2}
+--------
+
+### Header 3 ###      {#header3}
+
+Then you can create links to different parts of the same document like this:
+
+[Link back to header 1](#header1),
+[Link back to header 2](#header2),
+[Link back to header 3](#header3)
+
+
+
+pegdown/src/test/resources/Maruku/extra_table1.md
+---
+
+
+First Header  | Second Header
+------------- | -------------
+Content Cell  | Content Cell
+Content Cell  | Content Cell
+
+
+
+pegdown/src/test/resources/Maruku/footnotes.md
+---
+
+That's some text with a footnote [^b] and another [^c] and another [^a].
+
+[^a]: And that's the footnote.
+
+    That's the second paragraph of the footnote.
+
+
+[^b]: And that's the footnote.
+This is second sentence (same paragraph).
+
+[^c]:
+    This is the very long one.
+
+    That's the second paragraph.
+
+
+This is not a footnote.
+
+
+pegdown/src/test/resources/Maruku/headers.md
+---
+
+A title with *emphasis*
+=======================
+
+A title with *emphasis*
+-----------------------
+
+
+#### A title with *emphasis* ####
+
+
+
+
+
+pegdown/src/test/resources/Maruku/hex_entities.md
+---
+
+Examples of numeric character references include &#169; or &#xA9; for the copyright symbol, &#913; or &#x391; for the Greek capital letter alpha, and &#1575; or &#x627; for the Arabic letter alef.
+
+
+
+
+pegdown/src/test/resources/Maruku/hrule.md
+---
+
+* * *
+
+
+
+pegdown/src/test/resources/Maruku/html2.md
+---
+
+One
+<div></div>123
+
+<div></div>123
+
+
+pegdown/src/test/resources/Maruku/html3.md
+---
+
+taking part in <a href="http://sied.dis.uniroma1.it/">some arcane conspirations</a> which
+involve <b href="http://www.flickr.com/photos/censi/70893277/">coffee</b>,
+<a href="http://flickr.com/photos/censi/42775664/in/set-936677/">robots</a>,
+<a href="http://www.flickr.com/photos/censi/42775888/in/set-936677/">sushi</a>,
+
+
+
+pegdown/src/test/resources/Maruku/html4.md
+---
+
+<div class="frame">
+	<a  class="photo" href="http://www.flickr.com/photos/censi/54757256/"><img alt=""
+  moz-do-not-send="true"
+  src="http://static.flickr.com/27/54757256_1a2c1d2a95_m.jpg" /></a>
+</div>
+
+
+
+
+pegdown/src/test/resources/Maruku/html5.md
+---
+
+ <div class="frame">
+ <a class="photo" href="http://www.flickr.com/photos/censi/88561568/" ><img moz-do-not-send="true" src="http://static.flickr.com/28/88561568_ab84d28245_m.jpg" width="240" height="180" alt="Aperitif" /></a>
+ </div>
+
+
+
+
+pegdown/src/test/resources/Maruku/ie.md
+---
+
+`<p>here's an apostrophe & a quote "</p>`
+
+	<p>here's an apostrophe & a quote "</p>
+{:}
+
+	<p>here's an apostrophe & a quote "</p>
+{:lang=xml}
+
+	<p>here's an apostrophe & a quote "</p>
+{:html_use_syntax=true lang=not_supported}
+
+	<p>here's an apostrophe & a quote "</p>
+{:html_use_syntax=true lang=xml}
+
+
+
+
+pegdown/src/test/resources/Maruku/images2.md
+---
+
+
+This is an ![image][].
+
+This is an ![image].
+
+[image]: image.jpg
+
+
+
+pegdown/src/test/resources/Maruku/images.md
+---
+
+
+This page does not uilizes ![Cascading Style Sheets](http://jigsaw.w3.org/css-validator/images/vcss)
+
+
+Please mouseover to see the title: ![Cascading Style Sheets](http://jigsaw.w3.org/css-validator/images/vcss "Title ok!")
+
+Please mouseover to see the title: ![Cascading Style Sheets](http://jigsaw.w3.org/css-validator/images/vcss 'Title ok!')
+
+
+I'll say it one more time: this page does not use ![Cascading Style Sheets] [css]
+
+This is double size: ![Cascading Style Sheets] [css2]
+
+
+
+[css]: http://jigsaw.w3.org/css-validator/images/vcss "Optional title attribute"
+
+[css2]: http://jigsaw.w3.org/css-validator/images/vcss "Optional title attribute"
+
+pegdown/src/test/resources/Maruku/inline_html2.md
+---
+
+<div markdown="1">Test **bold**</div>
+<p markdown="1">Test **bold**</p>
+
+
+pegdown/src/test/resources/Maruku/inline_html.md
+---
+
+CSS: style.css
+
+Input:
+
+	<em>Emphasis</em>
+
+Result: <em>Emphasis</em>
+
+Input:
+
+	<img src="http://jigsaw.w3.org/css-validator/images/vcss"/>
+
+Result on span: <img src="http://jigsaw.w3.org/css-validator/images/vcss"/>
+
+Result alone:
+
+<img src="http://jigsaw.w3.org/css-validator/images/vcss"/>
+
+<div markdown="1">
+	This is *true* markdown text (paragraph)
+
+	<p markdown="1">
+		This is *true* markdown text (no paragraph)
+	</p>
+	<p markdown="block">
+		This is *true* markdown text (block paragraph)
+	</p>
+</div>
+
+<table>
+<tr>
+<td markdown="1">This is *true* markdown text. (no par)</td>
+<td markdown="block">This is *true* markdown text. (par)</td>
+</tr>
+</table>
+
+
+
+
+pegdown/src/test/resources/Maruku/links.md
+---
+
+
+Search on [Google][]
+
+Search on [Google] []
+
+Search on [Google] [google]
+
+Search on [Google] [Google]
+
+Search on [Google images][]
+
+Inline: [Google images](http://google.com)
+
+Inline with title: [Google images](http://google.com "Title")
+
+Inline with title: [Google images]( http://google.com  "Title" )
+
+
+Search on <http://www.gogole.com> or <http://Here.com> or ask <bill@google.com>
+or you might ask bill@google.com.
+
+If all else fails, ask [Google](http://www.google.com)
+
+[google]: http://www.google.com
+
+[google2]: http://www.google.com 'Single quotes'
+
+[google3]: http://www.google.com "Double quotes"
+
+[google4]: http://www.google.com (Parenthesis)
+
+[Google Search]:
+ http://www.google.com "Google search"
+
+[Google Images]:
+ http://images.google.com  (Google images)
+
+
+pegdown/src/test/resources/Maruku/list1.md
+---
+
+*   A list item with a blockquote:
+
+    > This is a blockquote
+    > inside a list item.
+
+
+
+pegdown/src/test/resources/Maruku/list2.md
+---
+
+*   This is a list item with two paragraphs.
+
+    This is the second paragraph in the list item. You're
+only required to indent the first line. Lorem ipsum dolor
+sit amet, consectetuer adipiscing elit.
+
+*   other
+
+
+
+pegdown/src/test/resources/Maruku/list3.md
+---
+
+*   A list item with a blockquote:
+
+    > This is a blockquote
+    > inside a list item.
+
+*   A list item with a code block:
+
+        <code goes here>
+
+
+pegdown/src/test/resources/Maruku/list4.md
+---
+
+This is a list:
+* one
+* two
+
+This is not a list:
+* one
+ciao
+
+This is a list:
+1. one
+1. two
+
+This is not a list:
+1987. one
+ciao
+
+
+
+pegdown/src/test/resources/Maruku/lists11.md
+---
+
+- ένα
+
+
+
+pegdown/src/test/resources/Maruku/lists6.md
+---
+
+
+
+
+pegdown/src/test/resources/Maruku/lists7b.md
+---
+
+* a
+    * a1
+    * a2
+* b
+
+
+
+
+pegdown/src/test/resources/Maruku/lists7.md
+---
+
+Ciao
+
+*	Tab
+	*	Tab
+		*	Tab
+
+
+
+pegdown/src/test/resources/Maruku/lists8.md
+---
+
+Here is a paragraph.
+
+
+   * Item 1
+   * Item 2
+   * Item 3
+
+
+
+pegdown/src/test/resources/Maruku/lists9.md
+---
+
+- Due
+  1. tre
+  1. tre
+  1. tre
+- Due
+
+
+pegdown/src/test/resources/Maruku/lists_after_paragraph.md
+---
+
+Paragraph, list with no space:
+* ciao
+
+Paragraph, list with 1 space:
+ * ciao
+
+Paragraph, list with 3 space:
+   * ciao
+
+Paragraph, list with 4 spaces:
+    * ciao
+
+Paragraph, list with 1 tab:
+	* ciao
+
+Paragraph (1 space after), list with no space:
+* ciao
+
+Paragraph (2 spaces after), list with no space:
+* ciao
+
+Paragraph (3 spaces after), list with no space:
+* ciao
+
+Paragraph with block quote:
+> Quoted
+
+Paragraph with header:
+### header ###
+
+Paragraph with header on two lines:
+header
+------
+
+
+Paragraph with html after
+<div></div>
+
+Paragraph with html after, indented:
+     <em>Emphasis</em>
+
+Paragraph with html after, indented: <em>Emphasis</em> *tralla* <em>Emph</em>
+
+Paragraph with html after, indented: <em>Emphasis *tralla* Emph</em>
+
+
+
+pegdown/src/test/resources/Maruku/lists.md
+---
+
+*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+    viverra nec, fringilla in, laoreet vitae, risus.
+*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+    Suspendisse id sem consectetuer libero luctus adipiscing.
+*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+Suspendisse id sem consectetuer libero luctus adipiscing.
+ *  Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+Suspendisse id sem consectetuer libero luctus adipiscing.
+ *  Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+Ancora
+
+*   This is a list item with two paragraphs. Lorem ipsum dolor
+    sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+    mi posuere lectus.
+
+    ATTENZIONE!
+
+*  Suspendisse id sem consectetuer libero luctus adipiscing.
+
+
+Ancora
+
+*   This is a list item with two paragraphs.
+
+    This is the second paragraph in the list item. You're
+only required to indent the first line. Lorem ipsum dolor
+sit amet, consectetuer adipiscing elit.
+
+*   Another item in the same list.
+
+
+pegdown/src/test/resources/Maruku/lists_ol.md
+---
+
+1.   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+    viverra nec, fringilla in, laoreet vitae, risus.
+ 2.   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+    Suspendisse id sem consectetuer libero luctus adipiscing.
+3.   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+Suspendisse id sem consectetuer libero luctus adipiscing.
+ 3.  Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+Suspendisse id sem consectetuer libero luctus adipiscing.
+ 4.  Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+Ancora
+
+1.  This is a list item with two paragraphs. Lorem ipsum dolor
+    sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+    mi posuere lectus.
+
+    ATTENZIONE!
+
+    - Uno
+    - Due
+        1. tre
+        1. tre
+        1. tre
+    - Due
+
+2.  Suspendisse id sem consectetuer libero luctus adipiscing.
+
+
+Ancora
+
+*   This is a list item with two paragraphs.
+
+    This is the second paragraph in the list item. You're
+only required to indent the first line. Lorem ipsum dolor
+sit amet, consectetuer adipiscing elit.
+
+*   Another item in the same list.
+
+
+pegdown/src/test/resources/Maruku/loss.md
+---
+
+<br/>123
+
+
+
+pegdown/src/test/resources/Maruku/misc_sw.md
+---
+
+Subject: Software not painful to use
+Subject_short: painless software
+Topic: /misc/coolsw
+Archive: no
+Date: Nov 20 2006
+Order: -9.5
+inMenu: true
+
+
+### General ###
+
+* *Operating System* : [Mac OS X][switch]: heaven, after the purgatory of Linux
+  and the hell of Windows.
+* *Browser*: [Firefox][firefox]. On a Mac, [Camino][camino].
+* *Email*: [GMail][gmail], "search, don't sort" really works.
+* *Text Editor*: [TextMate][textmate], you have to buy it, but it's worth every
+  penny. There are rumours that it's been converting (recovering) Emacs
+  users (addicts). Unfortunately, it's Mac only. An alternative is
+  [jedit][jedit] (GPL, Java).
+
+### Development ###
+
+* *Build system*: [cmake][cmake], throw the [autotools][autotools] away.
+* *Source code control system*: ditch CVS for [subversion][subversion].
+* *Project management*: [Trac][trac] tracks everything.
+* *Scripting language*: [Ruby][ruby] is Japanese pragmatism (and has a [poignant][poignant] guide).
+   Python, you say? Python is too academic and snob:
+
+      $ python
+      Python 2.4.1 (\#1, Jun  4 2005, 00:54:33)
+      Type "help", "copyright", "credits" or "license" for more information.
+      >>> exit
+      'Use Ctrl-D (i.e. EOF) to exit.'
+      >>> quit
+      'Use Ctrl-D (i.e. EOF) to exit.'
+
+* *Java IDE*: [JBuilder][jbuilder] is great software and has a free version (IMHO better than Eclipse). Java
+ is not a pain anymore since it gained [generics][java-generics] and got opensourced.
+* *Mark-up language*: HTML is so 2001, why don't you take at look at [Markdown][markdown]? [Look at the source of this page](data/misc_markdown.png).
+* *C++ libraries*:
+    * [QT][qt] for GUIs.
+    * [GSL][gsl] for math.
+    * [Magick++][magick] for manipulating images.
+    * [Cairo][cairo] for creating PDFs.
+    * [Boost][boost] for just about everything else.
+
+
+### Research ###
+
+* *Writing papers*: [LaTeX][latex]
+* *Writing papers & enjoying the process*: [LyX][lyx]
+* *Handsome figures in your papers*: [xfig][xfig] or, better, [jfig][jfig].
+* *The occasional presentation with many graphical content*:
+  [OpenOffice Impress][impress] (using the [OOOlatex plugin][ooolatex]);
+  the alternative is PowerPoint with the [TexPoint][texpoint] plugin.
+* *Managing BibTeX*: [jabref][jabref]: multi-platform, for all your bibtex needs.
+* *IEEExplore and BibTeX*: convert citations using [BibConverter][bibconverter].
+
+### Cool websites ###
+
+* *Best site in the wwworld*: [Wikipedia][wikipedia]
+* [Mutopia][mutopia] for sheet music; [the Gutenberg Project][gutenberg] for books; [LiberLiber][liberliber] for books in italian.
+* *Blogs*: [Bloglines][bloglines]
+* *Sharing photos*: [flickr][flickr] exposes an API you can use.
+
+
+[firefox]:   http://getfirefox.com/
+[gmail]:     http://gmail.com/
+[bloglines]: http://bloglines.com/
+[wikipedia]: http://en.wikipedia.org/
+[ruby]:      http://www.ruby-lang.org/
+[poignant]:  http://poignantguide.net/ruby/
+[webgen]:    http://webgen.rubyforge.org/
+[markdown]:  http://daringfireball.net/projects/markdown/
+[latex]:     http://en.wikipedia.org/wiki/LaTeX
+[lyx]:       http://www.lyx.org
+[impress]:   http://www.openoffice.org/product/impress.html
+[ooolatex]:  http://ooolatex.sourceforge.net/
+[texpoint]:  http://texpoint.necula.org/
+[jabref]:    http://jabref.sourceforge.net/
+[camino]:    http://www.caminobrowser.org/
+[switch]:    http://www.apple.com/getamac/
+[textmate]:  http://www.apple.com/getamac/
+[cmake]:     http://www.cmake.org/
+[xfig]:      http://www.xfig.org/
+[jfig]:         http://tams-www.informatik.uni-hamburg.de/applets/jfig/
+[subversion]:   http://subversion.tigris.org
+[jbuilder]:     http://www.borland.com/us/products/jbuilder/index.html
+[flickr]:       http://www.flickr.com/
+[myflickr]:     http://www.flickr.com/photos/censi
+[bibconverter]: http://www.bibconverter.net/ieeexplore/
+[autotools]:    http://sources.redhat.com/autobook/
+[jedit]:        http://www.jedit.org/
+[qt]:           http://www.trolltech.no/
+[gsl]:          http://www.gnu.org/software/gsl/
+[magick]:       http://www.imagemagick.org/Magick++/
+[cairo]:        http://cairographics.org/
+[boost]:        http://www.boost.org/
+[markdown]:     http://en.wikipedia.org/wiki/Markdown
+[trac]:         http://trac.edgewall.org/
+[mutopia]:      http://www.mutopiaproject.org/
+[liberliber]:   http://www.liberliber.it/
+[gutenberg]:    http://www.gutenberg.org/
+[java-generics]: http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html
+
+
+
+
+pegdown/src/test/resources/Maruku/olist.md
+---
+
+This is a list:
+
+2. one
+2. two
+3. three
+
+
+pegdown/src/test/resources/Maruku/one.md
+---
+
+One line
+
+
+pegdown/src/test/resources/Maruku/paragraph.md
+---
+
+Paragraph
+
+
+
+pegdown/src/test/resources/Maruku/paragraphs.md
+---
+
+Paragraph 1
+
+Paragraph 2
+
+
+Paragraph 3
+Paragraph 4
+Paragraph Br->
+Paragraph 5
+
+
+
+
+pegdown/src/test/resources/Maruku/smartypants.md
+---
+
+	'Twas a "test" to 'remember' in the '90s.
+'Twas a "test" to 'remember' in the '90s.
+
+	It was --- in a sense --- really... interesting.
+It was --- in a sense --- really... interesting.
+
+	I -- too -- met << some curly quotes >> there or <<here>>No space.
+I -- too -- met << some curly quotes >> there or <<here>>No space.
+
+
+	She was 6\"12\'.
+> She was 6\"12\'.
+
+
+
+pegdown/src/test/resources/Maruku/syntax_hl.md
+---
+
+This is ruby code:
+
+	require 'maruku'
+
+	puts Maruku.new($stdin).to_html
+
+This is ruby code:
+
+	require 'maruku'
+{: lang=ruby html_use_syntax}
+
+	puts Maruku.new($stdin).to_html
+
+
+pegdown/src/test/resources/Maruku/table_attributes.md
+---
+
+
+h         | h
+----------|--
+{:t}  c1  | c2
+{: summary="Table summary" .class1 style="color:red" border=3 width="50%" frame=lhs rules=cols  cellspacing=2em cellpadding=4px}
+
+{:t: scope="row"}
+
+
+pegdown/src/test/resources/Maruku/test.md
+---
+
+
+           $ python
+
+
+
+
+
+pegdown/src/test/resources/Maruku/wrapping.md
+---
+
+Lorem ipsum dolor amet. Lorem ipsum dolor amet. Lorem ipsum dolor amet. Lorem ipsum dolor amet. Lorem ipsum dolor amet. Lorem ipsum dolor amet. Lorem ipsum dolor amet. Break:
+Lorem ipsum dolor amet. Lorem ipsum dolor amet. Lorem ipsum dolor amet. Lorem ipsum dolor amet.
+
+* Lorem ipsum dolor amet. Lorem ipsum dolor amet. Lorem ipsum dolor amet. Lorem ipsum dolor amet
+  Lorem ipsum Break:
+  Lorem ipsum dolor amet. Lorem ipsum dolor amet. Lorem ipsum dolor amet
+* Lorem ipsum dolor amet. Lorem ipsum dolor amet. Lorem ipsum dolor amet. Lorem ipsum dolor amet
+
+
+
+pegdown/src/test/resources/Maruku/xml2.md
+---
+
+<!--
+<
+-->
+
+
+pegdown/src/test/resources/Maruku/xml3.md
+---
+
+<table markdown='1'>
+	Blah
+	<thead>
+		<td>*em*</td>
+	</thead>
+</table>
+
+
+
+pegdown/src/test/resources/Maruku/xml_instruction.md
+---
+
+
+<? noTarget?>
+<?php ?>
+<?xml ?>
+<?mrk ?>
+
+Targets <? noTarget?> <?php ?> <?xml ?> <?mrk ?>
+
+Inside: <?mrk puts "Inside: Hello" ?> last
+
+
+
+
+pegdown/src/test/resources/Maruku/xml.md
+---
+
+
+<svg:svg/>
+
+<svg:svg
+width="600px" height="400px">
+  <svg:g id="group">
+	<svg:circle id="circ1" r="1cm" cx="3cm" cy="3cm" style="fill:red;"></svg:circle>
+	<svg:circle id="circ2" r="1cm" cx="7cm" cy="3cm" style="fill:red;" />
+  </svg:g>
+</svg:svg>
+
+
+
+pegdown/src/test/resources/pegdown/Abbreviations.md
+---
+
+
+The HTML specification is maintained by the W3C.
+
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+
+
+
+Operation Tigra Genesis is going well.
+
+*[Tigra Genesis]:
+
+
+pegdown/src/test/resources/pegdown/AstText.md
+---
+
+# Ast Test
+
+This _is_ a **simple** & small text to
+
+> test
+> yes, test
+
+the functionality of
+
+* AST index creation
+    - one more level
+
+* nothing more
+
+        Some code!
+
+* multi
+  paragraph
+
+  list item!
+
+And:
+  ~ a definition!
+
+Another one
+:   With more
+
+    than one paragraph!
+
+Everything
+
+    is expected
+    to be fine
+
+A Blockquote
+
+> easy
+>
+> easy easy
+
+A code block starting with a tab:
+
+	> bla bla
+
+And more text
+
+pegdown/src/test/resources/pegdown/Autolinks.md
+---
+
+# Autolinks
+
+Autolinks are simple URIs like http://www.parboiled.org,
+which will be automatically "activated" by pegdown.
+
+pegdown tries to be smart and not include trailing
+punctuation marks like commas and such in the email
+and URI links (joe@somewhere.com is such an example).
+ftp://somesite.org:1234: this would be another one!
+
+
+pegdown/src/test/resources/pegdown/Bug_in_0.8.5.1.md
+---
+
+**A**ll**F**ather wo**R**ld **O**rder!
+
+pegdown/src/test/resources/pegdown/Bug_in_0.8.5.4.md
+---
+
+  * Hello World
+    * Worwe qworijwetor
+
+pegdown/src/test/resources/pegdown/Bug_in_1.0.0.md
+---
+
+The following list contains items with code blocks:
+
+* List Item A
+
+        This is a verbatim line
+        and another one
+
+        all of these should become
+        part of the
+
+        same verbatim block
+
+    only these lines here
+
+        should interrupt
+        the
+
+        verbatims blocks
+
+* another List Items
+
+and something completely different here
+
+pegdown/src/test/resources/pegdown/HTML suppression.md
+---
+
+HTML <b>SUPPRESSION</b>
+=======================
+
+This is a paragraph containing a <strong>strong</strong> inline HTML element and:
+
+<div>
+    <p>an actual block of HTML!</p>
+</div>
+
+
+pegdown/src/test/resources/pegdown/Linebreaks.md
+---
+
+Linebreaks
+==========
+
+With the HARDWRAPS extension
+enabled all these linebreaks
+should be kept as is in the
+created HTML
+
+These ones here
+as
+well!
+
+
+pegdown/src/test/resources/pegdown/No Follow Links.md
+---
+
+# No Follow Links
+
+Autolinks are simple URIs like http://www.parboiled.org,
+which will be automatically "activated" by pegdown.
+
+pegdown tries to be smart and not include trailing
+punctuation marks like commas and such in the email
+and URI links (joe@somewhere.com is such an example).
+ftp://somesite.org:1234: this would be another one!
+
+This is a [regular](http://regular.com) link and
+[this one here][] is a reference link.
+
+  [this one here]: http://blabla.com
+
+pegdown/src/test/resources/pegdown/Parens_in_URL.md
+---
+
+[Inline link 1 with parens](/url\(test\) "title").
+
+[Inline link 2 with parens](</url\(test\)> "title").
+
+[Reference link 1 with parens][1].
+
+[Reference link 2 with parens][2].
+
+  [1]: /url(test) "title"
+  [2]: </url(test)> "title"
+
+
+pegdown/src/test/resources/pegdown/Quoted Blockquote.md
+---
+
+    > Line A
+    > Line B
+    >
+    > Line after blank line.
+
+
+pegdown/src/test/resources/pegdown/Smartypants.md
+---
+
+# Smart quotes, ellipses, dashes
+
+"Hello," said the spider. "'Shelob' is my name."
+
+'A', 'B', and 'C' are letters.
+
+'Oak,' 'elm,' and 'beech' are names of trees.
+So is 'pine.'
+
+'He said, "I want to go."'
+Were you alive in the 70's?
+
+Here is some quoted '`code`' and a "[quoted link][1]".
+
+I've alwayed thought I'd rather not do it. But then we're all screwed, since I'm the only one!
+
+Some dashes: one---two --- three--four -- five.
+
+Dashes between numbers: 5-7, 255-66, 1987-1999.
+
+Ellipses...and. . .and . . . .
+
+pegdown/src/test/resources/pegdown/Special Chars.md
+---
+
+# Special character handling
+
+Quote from <http://henkelmann.eu/2011/01/06/actuarius_release_note>
+
+Better handling of escapes than PegDown: PegDown does not escape
+special HTML characters like <, >, &, " and ' in normal text paragraphs, just in code blocks.
+
+Maybe if>they are&not "stand-alone"?
+
+Well, I don't think so :)
+(at least not as of **pegdown 0.9.2**!)
+
+pegdown/src/test/resources/pegdown/Tables.md
+---
+
+Tables
+------
+
+Simple Table:
+
+First | Second
+------|-------
+Cool  | Shit
+
+Without header:
+
+|--------|-------|
+|Cool    | Shit  |
+|is this | really
+
+With some alignment:
+
+:-----|-----:|----|:---:
+Cool  | Shit | in | here
+
+And now to some colspan:
+
+Names ||
+ Name | Firstname | Age
+------|-----------|----:
+  Fox | Peter     | 42
+  Guy | Ritchie   | ca. 60
+
+
+Multimarkdown example:
+
+|             |          Grouping           ||
+First Header  | Second Header | Third Header |
+ ------------ | :-----------: | -----------: |
+Content       |          *Long Cell*        ||
+Content       |   **Cell**    |         Cell |
+New section   |     More      |         Data |
+And more      |               |   And more   |
+
+
+
+pegdown/src/test/resources/PhpMarkdown/Backslash_escapes.md
+---
+
+Tricky combinaisons:
+
+backslash with \-- two dashes
+
+backslash with \> greater than
+
+\[test](not a link)
+
+\*no emphasis*
+
+pegdown/src/test/resources/PhpMarkdown/Code_block_in_a_list_item.md
+---
+
+
+*	List Item:
+
+		code block
+
+		with a blank line
+
+	within a list item.
+
+pegdown/src/test/resources/PhpMarkdown/Code_Spans.md
+---
+
+From `<!--` to `-->`
+on two lines.
+
+From `<!--`
+to `-->`
+on three lines.
+
+
+pegdown/src/test/resources/PhpMarkdown/Email_auto_links.md
+---
+
+<michel.fortin@michelf.com>
+
+International domain names: <help@tūdaliņ.lv>
+
+pegdown/src/test/resources/PhpMarkdown/Emphasis.md
+---
+
+Combined emphasis:
+
+1.  ***test test***
+2.  ___test test___
+3.  *test **test***
+4.  **test *test***
+5.  ***test* test**
+6.  ***test** test*
+7.  ***test* test**
+8.  **test *test***
+9.  *test **test***
+10. _test __test___
+11. __test _test___
+12. ___test_ test__
+13. ___test__ test_
+14. ___test_ test__
+15. __test _test___
+16. _test __test___
+
+
+Incorrect nesting:
+
+1.  *test  **test*  test**
+2.  _test  __test_  test__
+3.  **test  *test** test*
+4.  __test  _test__ test_
+5.  *test   *test*  test*
+6.  _test   _test_  test_
+7.  **test **test** test**
+8.  __test __test__ test__
+
+
+
+No emphasis:
+
+1.  test*  test  *test
+2.  test** test **test
+3.  test_  test  _test
+4.  test__ test __test
+
+
+
+Middle-word emphasis (asterisks):
+
+1.  *a*b
+2.   a*b*
+3.   a*b*c
+4. **a**b
+5.   a**b**
+6.   a**b**c
+
+
+Middle-word emphasis (underscore):
+
+1.  _a_b
+2.   a_b_
+3.   a_b_c
+4. __a__b
+5.   a__b__
+6.   a__b__c
+
+my_precious_file.txt
+
+
+## Tricky Cases
+
+E**. **Test** TestTestTest
+
+E**. **Test** Test Test Test
+
+
+pegdown/src/test/resources/PhpMarkdownExtra/Abbr.md
+---
+
+Some text about HTML, SGML and HTML4.
+
+Let's talk about the U.S.A., (É.U. or É.-U. d'A. in French).
+
+*[HTML4]: Hyper Text Markup Language version 4
+*[HTML]: Hyper Text Markup Language
+*[SGML]: Standard Generalized Markup Language
+*[U.S.A.]: United States of America
+*[É.U.] : États-Unis d'Amérique
+*[É.-U. d'A.] : États-Unis d'Amérique
+
+And here we have a CD, some CDs, and some other CD's.
+
+*[CD]: Compact Disk
+
+Let's transfert documents through TCP/IP, using TCP packets.
+
+*[IP]: Internet Protocol
+*[TCP]: Transmission Control Protocol
+
+ ---
+
+Bienvenue sur [CMS](http://www.bidulecms.com "Bidule CMS").
+
+*[CMS]: Content Management System
+
+pegdown/src/test/resources/PhpMarkdownExtra/Emphasis.md
+---
+
+Combined emphasis:
+
+1.  ***test test***
+2.  ___test test___
+3.  *test **test***
+4.  **test *test***
+5.  ***test* test**
+6.  ***test** test*
+7.  ***test* test**
+8.  **test *test***
+9.  *test **test***
+10. _test __test___
+11. __test _test___
+12. ___test_ test__
+13. ___test__ test_
+14. ___test_ test__
+15. __test _test___
+16. _test __test___
+
+
+Incorrect nesting:
+
+1.  *test  **test*  test**
+2.  _test  __test_  test__
+3.  **test  *test** test*
+4.  __test  _test__ test_
+5.  *test   *test*  test*
+6.  _test   _test_  test_
+7.  **test **test** test**
+8.  __test __test__ test__
+
+
+
+No emphasis:
+
+1.  test*  test  *test
+2.  test** test **test
+3.  test_  test  _test
+4.  test__ test __test
+
+
+
+Middle-word emphasis (asterisks):
+
+1.  *a*b
+2.   a*b*
+3.   a*b*c
+4. **a**b
+5.   a**b**
+6.   a**b**c
+
+
+Middle-word emphasis (underscore):
+
+1.  _a_b
+2.   a_b_
+3.   a_b_c
+4. __a__b
+5.   a__b__
+6.   a__b__c
+
+my_precious_file.txt
+
+
+## Tricky Cases
+
+E**. **Test** TestTestTest
+
+E**. **Test** Test Test Test
+
+
+pegdown/src/test/resources/PhpMarkdownExtra/Fenced_Code_Blocks.md
+---
+
+~~~
+Fenced
+~~~
+
+Code block starting and ending with empty lines:
+
+~~~
+
+
+Fenced
+
+
+~~~
+
+Indented code block containing fenced code block sample:
+
+	~~~
+	Fenced
+	~~~
+
+Fenced code block with indented code block sample:
+
+~~~
+Some text
+
+	Indented code block sample code
+~~~
+
+Fenced code block with long markers:
+
+~~~~~~~~~~~~~~~~~~
+Fenced
+~~~~~~~~~~~~~~~~~~
+
+Empty Fenced code block:
+
+~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~
+
+Fenced code block with fenced code block markers of different length in it:
+
+~~~~
+In code block
+~~~
+Still in code block
+~~~~~
+Still in code block
+~~~~
+
+Fenced code block with Markdown header and horizontal rule:
+
+~~~
+#test
+---
+~~~
+
+Fenced code block with link definitions, footnote definition and
+abbreviation definitions:
+
+~~~
+[example]: http://example.com/
+
+[^1]: Footnote def
+
+*[HTML]: HyperText Markup Language
+~~~
+
+pegdown/src/test/resources/PhpMarkdownExtra/Footnotes.md
+---
+
+This is the first paragraph.[^first]
+
+[^first]:  This is the first note.
+
+* List item one.[^second]
+* List item two.[^third]
+
+[^third]: This is the third note, defined out of order.
+[^second]: This is the second note.
+[^fourth]: This is the fourth note.
+
+# Header[^fourth]
+
+Some paragraph with a footnote[^1], and another[^2].
+
+[^1]: Content for fifth footnote.
+[^2]: Content for sixth footnote spaning on
+    three lines, with some span-level markup like
+    _emphasis_, a [link][].
+
+[link]: http://www.michelf.com/
+
+Another paragraph with a named footnote[^fn-name].
+
+[^fn-name]:
+    Footnote beginning on the line next to the marker.
+
+This paragraph should not have a footnote marker since
+the footnote is undefined.[^3]
+
+This paragraph should not have a footnote marker since
+the footnote has already been used before.[^1]
+
+This paragraph links to a footnote with plenty of
+block-level content.[^block]
+
+[^block]:
+	Paragraph.
+
+	*   List item
+
+	> Blockquote
+
+	    Code block
+
+This paragraph host the footnote reference within a
+footnote test[^reference].
+
+[^reference]:
+	This footnote attemps to refer to another footnote. This
+	should be impossible.[^impossible]
+
+[^impossible]:
+	This footnote should not appear, as it is refered from
+	another footnote, which is not allowed.
+
+
+pegdown/src/test/resources/PhpMarkdownExtra/Inline_HTML_with_Markdown_content.md
+---
+
+# Markdown inside code blocks
+
+<div markdown="1">
+foo
+</div>
+
+<table>
+<tr><td markdown="1">test _emphasis_ (span)</td></tr>
+</table>
+
+<table>
+<tr><td markdown="span">test _emphasis_ (span)</td></tr>
+</table>
+
+<table>
+<tr><td markdown="block">test _emphasis_ (block)</td></tr>
+</table>
+
+## More complicated
+
+<table>
+<tr><td markdown="1">
+* this is _not_ a list item</td></tr>
+<tr><td markdown="span">
+* this is _not_ a list item</td></tr>
+<tr><td markdown="block">
+* this _is_ a list item
+</td></tr>
+</table>
+
+## With indent
+
+<div>
+    <div markdown="1">
+
+    Markdown content in HTML blocks is assumed to be
+    indented the same as the block opening tag.
+
+    **This should be the third paragraph after the header.**
+    </div>
+</div>
+
+## Code block with rogue `</div>`s in Markdown code span and block
+
+<div>
+  <div markdown="1">
+    * List item, not a code block
+
+Some text
+
+      This is a code block.
+  </div>
+</div>
+
+## No code block in markdown span mode
+
+<p markdown="1">
+    This is not a code block since Markdown parse paragraph
+    content as span. Code spans like `</p>` are allowed though.
+</p>
+
+<p markdown="1">_Hello_ _world_</p>
+
+## Preserving attributes and tags on more than one line:
+
+<p class="test" markdown="1"
+id="12">
+Some _span_ content.
+</p>
+
+
+## Header confusion bug
+
+<table class="canvas">
+<tr>
+<td id="main" markdown="1">Hello World!
+============
+
+Hello World!</td>
+</tr>
+</table>
+
+
+pegdown/src/test/resources/PhpMarkdownExtra/Tables.md
+---
+
+# Simple tables
+
+Header 1  | Header 2
+--------- | ---------
+Cell 1    | Cell 2
+Cell 3    | Cell 4
+
+With leading pipes:
+
+| Header 1  | Header 2
+| --------- | ---------
+| Cell 1    | Cell 2
+| Cell 3    | Cell 4
+
+With tailing pipes:
+
+Header 1  | Header 2  |
+--------- | --------- |
+Cell 1    | Cell 2    |
+Cell 3    | Cell 4    |
+
+With leading and tailing pipes:
+
+| Header 1  | Header 2  |
+| --------- | --------- |
+| Cell 1    | Cell 2    |
+| Cell 3    | Cell 4    |
+
+* * *
+
+# One-column one-row table
+
+With leading pipes:
+
+| Header
+| -------
+| Cell
+
+With tailing pipes:
+
+Header  |
+------- |
+Cell    |
+
+With leading and tailing pipes:
+
+| Header  |
+| ------- |
+| Cell    |
+
+* * *
+
+Table alignement:
+
+| Default   | Right     |  Center   |     Left  |
+| --------- |:--------- |:---------:| ---------:|
+| Long Cell | Long Cell | Long Cell | Long Cell |
+| Cell      | Cell      |   Cell    |     Cell  |
+
+Table alignement (alternate spacing):
+
+| Default   | Right     |  Center   |     Left  |
+| --------- | :-------- | :-------: | --------: |
+| Long Cell | Long Cell | Long Cell | Long Cell |
+| Cell      | Cell      |   Cell    |     Cell  |
+
+* * *
+
+# Empty cells
+
+| Header 1  | Header 2  |
+| --------- | --------- |
+| A         | B         |
+| C         |           |
+
+Header 1  | Header 2
+--------- | ---------
+A         | B
+          | D
+
+* * *
+
+# Missing tailing pipe
+
+Header 1  | Header 2
+--------- | --------- |
+Cell      | Cell      |
+Cell      | Cell      |
+
+Header 1  | Header 2  |
+--------- | ---------
+Cell      | Cell      |
+Cell      | Cell      |
+
+Header 1  | Header 2  |
+--------- | --------- |
+Cell      | Cell
+Cell      | Cell      |
+
+Header 1  | Header 2  |
+--------- | --------- |
+Cell      | Cell      |
+Cell      | Cell
+
+
+
+pegdown/src/test/resources/PhpMarkdown/Headers.md
+---
+
+Header
+======
+
+Header
+------
+
+### Header
+
+ - - -
+
+Header
+======
+Paragraph
+
+Header
+------
+Paragraph
+
+### Header
+Paragraph
+
+ - - -
+
+Paragraph
+Header
+======
+Paragraph
+
+Paragraph
+Header
+------
+Paragraph
+
+Paragraph
+### Header
+Paragraph
+
+pegdown/src/test/resources/PhpMarkdown/Horizontal_Rules.md
+---
+
+Horizontal rules:
+
+- - -
+
+* * *
+
+***
+
+---
+
+___
+
+Not horizontal rules (testing for a bug in 1.0.1j):
+
++++
+
+,,,
+
+===
+
+???
+
+AAA
+
+jjj
+
+j j j
+
+n n n
+
+
+pegdown/src/test/resources/PhpMarkdown/Inline_HTML_comments.md
+---
+
+Paragraph one.
+
+Paragraph two.
+
+<!-- enclosed tag </div> -->
+
+The end.
+
+
+pegdown/src/test/resources/PhpMarkdown/Inline_HTML_(Simple).md
+---
+
+With some attributes:
+
+<div id="test">
+	foo
+</div>
+
+<div id="test"
+     class="nono">
+	foo
+</div>
+
+
+pegdown/src/test/resources/PhpMarkdown/Inline_HTML_(Span).md
+---
+
+<abbr title="` **Attribute Content Is Not A Code Span** `">ACINACS</abbr>
+
+<abbr title="`first backtick!">SB</abbr>
+<abbr title="`second backtick!">SB</abbr>
+
+pegdown/src/test/resources/PhpMarkdown/Ins_and_del.md
+---
+
+Here is a block tag ins:
+
+<ins>
+<p>Some text</p>
+</ins>
+
+<ins>And here it is inside a paragraph.</ins>
+
+And here it is <ins>in the middle of</ins> a paragraph.
+
+<del>
+<p>Some text</p>
+</del>
+
+<del>And here is ins as a paragraph.</del>
+
+And here it is <del>in the middle of</del> a paragraph.
+
+
+pegdown/src/test/resources/PhpMarkdown/Links_inline_style.md
+---
+
+[silly URL w/ angle brackets](<?}]*+|&)>).
+
+
+pegdown/src/test/resources/PhpMarkdown/MD5_Hashes.md
+---
+
+# Character Escapes
+
+The MD5 value for `+` is "26b17225b626fb9238849fd60eabdf60".
+
+# HTML Blocks
+
+<p>test</p>
+
+The MD5 value for `<p>test</p>` is:
+
+6205333b793f34273d75379350b36826
+
+pegdown/src/test/resources/PhpMarkdown/Nesting.md
+---
+
+Valid nesting:
+
+**[Link](url)**
+
+[**Link**](url)
+
+**[**Link**](url)**
+
+pegdown/src/test/resources/PhpMarkdown/Parens_in_URL.md
+---
+
+[Inline link 1 with parens](/url\(test\) "title").
+
+[Inline link 2 with parens](</url\(test\)> "title").
+
+[Inline link 3 with non-escaped parens](/url(test) "title").
+
+[Inline link 4 with non-escaped parens](</url(test)> "title").
+
+[Reference link 1 with parens][1].
+
+[Reference link 2 with parens][2].
+
+  [1]: /url(test) "title"
+  [2]: </url(test)> "title"
+
+
+pegdown/src/test/resources/PhpMarkdown/PHP-Specific_Bugs.md
+---
+
+This tests for a bug where quotes escaped by PHP when using
+`preg_replace` with the `/e` modifier must be correctly unescaped
+(hence the `_UnslashQuotes` function found only in PHP Markdown).
+
+
+
+Headers below should appear exactly as they are typed (no backslash
+added or removed).
+
+Header "quoted\" again \\""
+===========================
+
+Header "quoted\" again \\""
+---------------------------
+
+### Header "quoted\" again \\"" ###
+
+
+
+Test with tabs for `_Detab`:
+
+	Code	'block'	with	some	"tabs"	and	"quotes"
+
+
+pegdown/src/test/resources/PhpMarkdown/Tight_blocks.md
+---
+
+Paragraph and no space:
+* ciao
+
+Paragraph and 1 space:
+ * ciao
+
+Paragraph and 3 spaces:
+  * ciao
+
+Paragraph and 4 spaces:
+   * ciao
+
+Paragraph before header:
+#Header
+
+Paragraph before blockquote:
+>Some quote.
+
+pegdown/src/test/resources/textmarkdown/CoreDumps5.8.md
+---
+
+* Unordered
+1. Ordered
+
+Text
+
+* Unordered
+1. Ordered
+
+
+pegdown/src/test/resources/textmarkdown/Emphasis.md
+---
+
+_M*A*S*H_ here I am going with original Markdown..
+
+foo_bar_bas I am going with PHP Markdown Extra here (by default, there is an option for original style behavior - see
+docs)..
+
+
+pegdown/src/test/resources/textmarkdown/HTML-Comment-encoding.md
+---
+
+A markdown paragraph with a comment that *will* be processed by original Markdown. However MultiMarkdown and Pandoc do not convert the & sigil in the comment..
+
+A paragraph <!-- This & *will* be converted by original Markdown -->
+
+<p><!-- This & will *not* be converted --></p>
+
+
+pegdown/src/test/resources/textmarkdown/Links_brackets.md
+---
+
+[ZIP archives](http://en.wikipedia.org/wiki/ZIP_(file_format) "ZIP (file format) - Wikipedia, the free encyclopedia")
+
+
+
+pegdown/src/test/resources/textmarkdown/Links_multiline_bugs_1.md
+---
+
+<http://bugs.debian.org/459885>
+
+[link
+text] [link
+id]
+
+[link id]: /someurl/
+
+
+pegdown/src/test/resources/textmarkdown/Links_multiline_bugs_2.md
+---
+
+<http://bugs.debian.org/459885>
+
+Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla bla. This is [my
+University][].
+
+  [my university]: http://www.ua.es
+
+
+pegdown/src/test/resources/textmarkdown/Links_reference_style.md
+---
+
+Foo [bar] [1].
+
+Foo [bar][1].
+
+Foo [bar]
+[1].
+
+[1]: /url/  "Title"
+
+
+With [embedded [brackets]] [b].
+
+
+Indented [once][].
+
+Indented [twice][].
+
+Indented [thrice][].
+
+Indented [four][] times.
+
+ [once]: /url
+
+  [twice]: /url
+
+   [thrice]: /url
+
+    [four]: /url
+
+
+[b]: /url/
+
+* * *
+
+[this] [this] should work
+
+So should [this][this].
+
+And [this] [].
+
+And [this][].
+
+And [this].
+
+But not [that] [].
+
+Nor [that][].
+
+Nor [that].
+
+[Something in brackets like [this][] should work]
+
+[Same with [this].]
+
+In this case, [this](/somethingelse/) points to something else.
+
+Backslashing should suppress \[this] and [this\].
+
+[this]: foo
+
+
+* * *
+
+Here's one where the [link
+breaks] across lines.
+
+Here's another where the [link
+breaks] across lines, but with a line-ending space.
+
+
+[link breaks]: /url/
+
+More multi line edge cases. First a broken link id
+
+[link
+text] [link
+id]
+
+[link id]: /someurl/
+
+Then a line with 2 chars of trailing whitespace and a line break [my
+University][].
+
+The a shortcut reference link with 2 chars of trailing whitespace and a line break [my
+University].
+
+  [my university]: http://www.ua.es
+
+pegdown/src/test/resources/textmarkdown/Lists-multilevel-md5-edgecase.md
+---
+
+# text1
+
+  * text2
+
+    * text3
+
+    text4
+
+## text5
+
+  * text6
+
+    * text7
+
+  text8
+
+## text9
+
+  * text10
+
+    * text11
+
+    text12
+
+    text13
diff --git a/doxia-modules/pom.xml b/doxia-modules/pom.xml
index 252cbbe..2caa10d 100644
--- a/doxia-modules/pom.xml
+++ b/doxia-modules/pom.xml
@@ -46,6 +46,8 @@
     <module>doxia-module-twiki</module>
     <module>doxia-module-xdoc</module>
     <module>doxia-module-xhtml</module>
+    <!-- this has a dep on xhtml module, so needs to be built last! -->
+    <module>doxia-module-markdown</module>
   </modules>
 
   <dependencies>