ADDED modules/markdown/markdown.man Index: modules/markdown/markdown.man ================================================================== --- /dev/null +++ modules/markdown/markdown.man @@ -0,0 +1,22 @@ +[comment {-*- tcl -*- doctools manpage}] +[manpage_begin markdown n 1.0] +[moddesc {Markdown to HTML Converter}] +[titledesc {Converts Markdown text to HTML}] +[category {Text processing}] +[require Tcl 8.5] +[require textutil [opt 0.8]] +[description] + +The package [package Markdown] provides a command to convert +Markdown annotated text into HMTL. + +[list_begin definitions] +[call [cmd ::Markdown::convert] [arg "markdown"]] + +This command takes in a block of Markdown text, and returns a block +of HTML. +[list_end] + +[vset CATEGORY textutil] +[include ../doctools2base/include/feedback.inc] +[manpage_end] ADDED modules/markdown/markdown.md Index: modules/markdown/markdown.md ================================================================== --- /dev/null +++ modules/markdown/markdown.md @@ -0,0 +1,93 @@ +# Markdown + +*Markdown* is a Markdown to XHTML processor. It supports the original +basic syntax as defined by John Gruber on his homepage at [http://daringfireball.net/projects/markdown/syntax](http://daringfireball.net/projects/markdown/syntax). + +# Markdown Dialect + +Tcl-markdown is intended to support the same range of inputs and outputs +as John Gruber's original Markdown processor. + +Common extensions are not supported at this time. + +## Known Bugs + +Per Markdown.mdtest, reflink text can contain brackets. This input +should produce a link to the "/url/"; at present it does not +(see Tcl-markdown test mdtest-1.3): +``` +With [embedded [brackets]] [b]. + +[b]: /url/ +``` + +Simple reference links are ignored. The following link should be +expanded, but it isn't (see Tcl-markdown test mdtest-1.4): + +``` +Simple link [this]. + +[this]: /url/ +``` + +Oddly, a line beginning and ending with brackets can contain +reference links within it. The following links should be expanded, +but are not (see Tcl-markdown tests mdtest-1.5 and 1.6): + +``` +[Links can be [embedded][] in brackets] +[Links can be [embedded] in brackets] + +[embedded]: /url/ + +``` + +Simple reflinks can have line breaks in them; these are currently not +supported (see Tcl-markdown tests mdtest-1.7 and 1.8): + +``` +The [link +breaks] across lines. + +The [link +breaks] across lines, but with a line-ending space. + +[link breaks]: /url/ + +``` + +## Mdtest Results + +Tcl-markdown has been run against the Markdown.mdtest test set provided by +[mdtest](https://github.com/michelf/mdtest) test suite, with mixed +results. + +* Running the test suite on OSX 10.8.5, using PHP 5.3.28, most + tests fail. Examination of the results reveals that most of the + "failures" involve whitespace differences with no effect on the rendered + appearance of the output. + +* Running the test suite on OSX 10.9, using PHP 5.4.30, most tests pass. + The test files and Tcl-markdown outputs are identical on both platforms. + My conjecture is that an XML-parser is used to compare the actual and + expected results, and that the comparison is a little more forgiving on + PHP 5.4.30. + +I am trying to fix substantive bugs; but see the mdtest-\*.\* tests +in test/markdown/markdown.test that are tagged with the constraint +"knownbug". + +## CommonMark Results + +Tcl-markdown has not been run against the CommonMark test suite as yet. +I would like to evolve it into a CommonMark compliant processor, but that +will take some time. + +# Provenance + +This module originated as the Tcl-Markdown project by Tobias Koch and Danyil Bohdan, +as part of the Caius Test Tool. [https://github.com/tobijk/caius/](https://github.com/tobijk/caius/) + +That module incorporated into Tcllib is based on a version that modifed and enhanced +by Will Duquette. [https://github.com/wduquette/tcl-markdown](https://github.com/wduquette/tcl-markdown) + ADDED modules/markdown/markdown.test Index: modules/markdown/markdown.test ================================================================== --- /dev/null +++ modules/markdown/markdown.test @@ -0,0 +1,418 @@ +# tool.test - Copyright (c) 2016 Sean Woods, Will DuQuette, Caius Project +# ------------------------------------------------------------------------- +#------------------------------------------------------------------------- +# TITLE: +# markdown.test +# +# PROJECT: +# tcl-markdown: Your project description +# +# DESCRIPTION: +# markdown: Test Suite +#------------------------------------------------------------------------- + +source [file join \ + [file dirname [file dirname [file join [pwd] [info script]]]] \ + devtools testutilities.tcl] + +testsNeedTcl 8.5 +testsNeedTcltest 2 + +support { + + use textutil/textutil.tcl textutil +} +testing { + useLocal markdown.tcl Markdown +} + +#------------------------------------------------------------------------- +# Setup + +tcltest::testConstraint knownbug 0 + + +# outdent text +# +# text - A multi-line text string +# +# This command outdents a multi-line text string to the left margin. + +proc outdent {text} { + # FIRST, remove any leading blank lines + regsub {\A(\s*\n)} $text "" text + + # NEXT, remove any trailing whitespace + set text [string trimright $text] + + # NEXT, get the length of the leading on the first line. + if {[regexp {\A(\s*)\S} $text dummy leader]} { + + # Remove the leader from the beginning of each indented + # line, and update the string. + regsub -all -line "^$leader" $text "" text + } + + return $text +} + + +proc cmp {s1 s2} { + set s1 [string trim $s1] + set s2 [string trim $s2] + + return [expr {$s1 eq $s2}] +} + +proc dumpcmp {s1 s2} { + set s1 [string trim $s1] + set s2 [string trim $s2] + + puts "# START S1" + puts $s1 + puts "# START S2" + puts $s2 + puts "# END TEXT" + puts "# LENGTH = [string length $s1], [string length $s2]" +} + +# convert in +# +# in - markdown input, possibly indented. +# +# Outdents the input and converts it to HTML. Indents it for inclusion +# in a result. +proc convert {in} { + set lines [split [string trim [Markdown::convert [outdent $in]]] \n] + + set out [join $lines "\n "] + return "\n $out\n" +} + +#========================================================================= +# Tcl-markdown tests + +#------------------------------------------------------------------------- +# Conversion tests + +test basic-1.1 {basic text} -body { + convert { + A line of text. + + Another line of text. + } +} -result { +

A line of text.

+ +

Another line of text.

+} + +test basic-1.2 {multi-line paragraphs} -body { + convert { + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat. + + Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat + cupidatat non proident, sunt in culpa qui officia deserunt mollit + anim id est laborum. + } +} -result { +

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat.

+ +

Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat + cupidatat non proident, sunt in culpa qui officia deserunt mollit + anim id est laborum.

+} + +test bquote-1.1 {simple blockquote} -body { + convert { + > + > A line of text. + > + } +} -result { +
+

A line of text.

+
+} + +test bquote-1.2 {">" on first line only.} -body { + convert { + > Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. + } +} -result { +
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua.

+
+} + +test bquote-1.3 {block quote with markup} -body { + convert { + > ### Heading 3 + > + > Lorem ipsum dolor sit amet, consectetur adipiscing elit + } +} -result { +
+

Heading 3

+ +

Lorem ipsum dolor sit amet, consectetur adipiscing elit

+
+} + +test bquote-1.4 {nested block quotes} -body { + convert { + > First this. + > + > > And then this and this + > > and this. + > + > And then this. + } +} -result { +
+

First this.

+ +
+

And then this and this + and this.

+
+ +

And then this.

+
+} + +test bquote-1.5 {complex case (from Caius test suite)} -body { + convert { + > + > > This is what he said. This is what she said. This is what + > > he said. This is what she said. + > > + > > ### Heading 3 ##### + > > + > > This is what he said. This is what she said. This is what + > > he said. This is what she said. + > > + > > import os + > > os.path.listdir() + > > + > > This is what he said. This is what she said. This is what + > > he said. This is what she said. + > + > ## Heading 2 + > + > This is what he said. This is what she said. This is what + > he said. This is what she said. + + This is a test. + } +} -result { +
+
+

This is what he said. This is what she said. This is what + he said. This is what she said.

+ +

Heading 3

+ +

This is what he said. This is what she said. This is what + he said. This is what she said.

+ +
import os
+    os.path.listdir()
+ +

This is what he said. This is what she said. This is what + he said. This is what she said.

+
+ +

Heading 2

+ +

This is what he said. This is what she said. This is what + he said. This is what she said.

+
+ +

This is a test.

+} + + + +test convert-2.2 {refs} -body { + convert { + Find it [here][foo]! + + [foo]: http://example.com/ "Optional Title Here" + } +} -result { +

Find it here!

+} + + +#========================================================================= +# Tests related to other processors or test suites + +#------------------------------------------------------------------------- +# Caius Markdown Tests +# +# These tests translate entire files. I prefer tests for individual +# features; when a test fails, you don't need to go hunting for the +# specifics. But I'm keeping these to show compatibility with the +# Caius processor. + +# 1.* - Caius markdown tests + +test caius-1.1 {bq test} -body { + set md [::tcltest::viewFile test/bq.md] + set html [::tcltest::viewFile test/bq.html] + + cmp $html [Markdown::convert $md] +} -result {1} + +test caius-1.2 {code test} -body { + set md [::tcltest::viewFile test/code.md] + set html [::tcltest::viewFile test/code.html] + + cmp $html [Markdown::convert $md] +} -result {1} + +test caius-1.3 {comments test} -body { + set md [::tcltest::viewFile test/comments.md] + set html [::tcltest::viewFile test/comments.html] + cmp $html [Markdown::convert $md] +} -result {1} + +test caius-1.4 {inline test} -body { + set md [::tcltest::viewFile test/inline.md] + set html [::tcltest::viewFile test/inline.html] + cmp $html [Markdown::convert $md] +} -result {1} + +test caius-1.5 {lists test} -body { + set md [::tcltest::viewFile test/lists.md] + set html [::tcltest::viewFile test/lists.html] + cmp $html [Markdown::convert $md] +} -result {1} + +test caius-1.6 {p_br_h_hr test} -body { + set md [::tcltest::viewFile test/p_br_h_hr.md] + set html [::tcltest::viewFile test/p_br_h_hr.html] + cmp $html [Markdown::convert $md] +} -result {1} + +test caius-1.7 {indent test} -body { + set md [::tcltest::viewFile test/indent.md] + set html [::tcltest::viewFile test/indent.html] + cmp $html [Markdown::convert $md] +} -result {1} + +#------------------------------------------------------------------------- +# mdtest: Bugs found while running michelf/mdtest + + +test mdtest-1.1 {AL: Auto links: & not escaped in URL} -body { + convert { + Auto-link with ampersand: + } +} -result { +

Auto-link with ampersand: http://example.com/?foo=1&bar=2

+} + +test mdtest-1.2 {Undefined refs cause syntax error} -body { + convert { + Undefined ref: [foo] + } +} -result { +

Undefined ref: [foo]

+} + +test mdtest-1.3 {LRS: Embedded brackets in link} -constraints knownbug -body { + convert { + With [embedded [brackets]] [b]. + + [b]: /url/ + } +} -result { +

With embedded [brackets].

+} + +test mdtest-1.4 {LRS: Simple reflink} -constraints knownbug -body { + convert { + Simple link [this]. + + [this]: /url/ + } +} -result { +

Simple link this.

+} + + +test mdtest-1.5 {LRS: Reflink embedded in brackets 1} -constraints knownbug -body { + convert { + [Links can be [embedded][] in brackets] + + [embedded]: /url/ + } +} -result { +

[Links can be embedded in brackets]

+} + +test mdtest-1.6 {LRS: Reflink embedded in brackets 2} -constraints knownbug -body { + convert { + [Links can be [embedded] in brackets] + + [embedded]: /url/ + } +} -result { +

[Links can be embedded in brackets]

+} + +test mdtest-1.7 {LRS: link breaks across lines, 1} -constraints knownbug -body { + convert { + The [link + breaks] across lines. + + [link breaks]: /url/ + } +} -result { +

The link + breaks across lines.

+} + +test mdtest-1.8 {LRS: link breaks across lines, 2} -constraints knownbug -body { + convert { + The [link + breaks] across lines, but with a line-ending space. + + [link breaks]: /url/ + } +} -result { +

The link + breaks across lines, but with a line-ending space.

+} + +test mdtest-1.9 {OAUL: "* * *" line after unordered list} -body { + # This causes the processor to hang. + convert { + * asterisk 1 + + * * * + } +} -result { + +} + +#------------------------------------------------------------------------- +# Cleanup + +testsuiteCleanup ADDED modules/markdown/test/bq.html Index: modules/markdown/test/bq.html ================================================================== --- /dev/null +++ modules/markdown/test/bq.html @@ -0,0 +1,31 @@ +

Heading 1

+ +
+

Heading 1

+ +

This is what he said. This is what she said. This is what +he said. This is what she said.

+ +
+

This is what he said. This is what she said. This is what +he said. This is what she said.

+ +

Heading 3

+ +

This is what he said. This is what she said. This is what +he said. This is what she said.

+ +
import os
+os.path.listdir()
+ +

This is what he said. This is what she said. This is what +he said. This is what she said.

+
+ +

Heading 2

+ +

This is what he said. This is what she said. This is what +he said. This is what she said.

+
+ +

This is a test.

ADDED modules/markdown/test/bq.md Index: modules/markdown/test/bq.md ================================================================== --- /dev/null +++ modules/markdown/test/bq.md @@ -0,0 +1,32 @@ +Heading 1 +===== + +> +> Heading 1 +> ==== + + +> This is what he said. This is what she said. This is what +he said. This is what she said. + +> +> > This is what he said. This is what she said. This is what +> > he said. This is what she said. +> > +> > ### Heading 3 ##### +> > +> > This is what he said. This is what she said. This is what +> > he said. This is what she said. +> > +> > import os +> > os.path.listdir() +> > +> > This is what he said. This is what she said. This is what +> > he said. This is what she said. +> +> ## Heading 2 +> +> This is what he said. This is what she said. This is what +> he said. This is what she said. + +This is a test. ADDED modules/markdown/test/code.html Index: modules/markdown/test/code.html ================================================================== --- /dev/null +++ modules/markdown/test/code.html @@ -0,0 +1,24 @@ +

Test code blocks

+ +

There is some code coming up. There is some code +coming up. There is some code coming up. There is +some code coming up.

+ +
import os
+
+fp = file("test.text", "rb")
+buf = fp.read()
+ +

There is some code coming up. There is some code +coming up. There is some code coming up. There is +some code coming up.

+ +
<?xml version="1.0" encoding="utf-8"?>
+<html>
+    <head>
+        <title>Title</title>
+    </head>
+    <body>
+        Body text...
+    </body>
+</html>
ADDED modules/markdown/test/code.md Index: modules/markdown/test/code.md ================================================================== --- /dev/null +++ modules/markdown/test/code.md @@ -0,0 +1,25 @@ +Test code blocks +=== + +There is some code coming up. There is some code +coming up. There is some code coming up. There is +some code coming up. + + import os + + fp = file("test.text", "rb") + buf = fp.read() + +There is some code coming up. There is some code +coming up. There is some code coming up. There is +some code coming up. + + + + + Title + + + Body text... + + ADDED modules/markdown/test/comments.html Index: modules/markdown/test/comments.html ================================================================== --- /dev/null +++ modules/markdown/test/comments.html @@ -0,0 +1,81 @@ +

There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph.

+ + + +

There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph.

+ +

There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph. +

+ +

+There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph.

+ +

There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph.

+ + + +

There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph.

+ +

+There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph.

+ +

There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph.

+ + + + +

There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph.

+ +

There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph. There is a paragraph. There is a paragraph. +There is a paragraph.

ADDED modules/markdown/test/comments.md Index: modules/markdown/test/comments.md ================================================================== --- /dev/null +++ modules/markdown/test/comments.md @@ -0,0 +1,82 @@ +There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. + + + +There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph. + +There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph. + + + +There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph. + +There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph. + + + +There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph. + + +There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph. + +There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph. + + + + +There is a paragraph. There is a paragraph. There is +a paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph. + +There is a paragraph. There is a paragraph. +There is a paragraph. There is a paragraph. There is a +paragraph. There is a paragraph. There is a paragraph. +There is a paragraph. + ADDED modules/markdown/test/indent.html Index: modules/markdown/test/indent.html ================================================================== --- /dev/null +++ modules/markdown/test/indent.html @@ -0,0 +1,7 @@ +

This code segment is indented with a tab

+ +
#include <stdio.h>
+ +

This code segment is indented with four spaces

+ +
#include <stdio.h>
ADDED modules/markdown/test/indent.md Index: modules/markdown/test/indent.md ================================================================== --- /dev/null +++ modules/markdown/test/indent.md @@ -0,0 +1,10 @@ + +This code segment is indented with a tab + + #include + +This code segment is indented with four spaces + + #include + + ADDED modules/markdown/test/inline.html Index: modules/markdown/test/inline.html ================================================================== --- /dev/null +++ modules/markdown/test/inline.html @@ -0,0 +1,58 @@ +

Test inline Elements

+ +

Emphasis

+ +

This one is emphasized with *. This one is strongly emphasized with __. +This one has its delimiter e*s*c*a*p*e*d as content. This is a free * +asterisk and a free _ underscore. This is a strong one.

+ +

Links

+ +

Use Google and Yahoo for search and read News for Nerds and +Hacker News. Watch videos at Youtube. +News for Nerds.

+ + + +

Unknown ref: [bla][foo]

+ +

Code

+ +

An XML declaration looks like this: <?xml version="1.0" encoding="utf-8"?>. +The printf() function is used for printing to the screen. Show a single +`.

+ +

Images

+ +

Here comes an inline graphic Inline Image. Here comes a reference Ref Image.

+ + + +

Entities

+ +

Here is a copyright symbol: ©. AT&T operator talk. 4 < 5 or 5 > 4.

+ +

Automatic Links

+ +

Write to me@example.com and visit http://www.example.com. +This is an auto-link with ampersand: http://example.com/?foo=1&bar=2.

+ +

Inline HTML

+ +

Here is some text in bold. An image tag no
+such file. And here comes a table:

+ + + + + +
Column AColumn B
+ +

Here comes some text. Here comes some text. Here comes some text. Here +comes some text. Here comes some text. Here comes some text. Here comes +some text.

+ +

Here is an inline email link with mailto: max@example.com. And +here is an inline email link without mailto: max@example.com. This is +not a valid email link <something@> neither is this <@example.com>.

ADDED modules/markdown/test/inline.md Index: modules/markdown/test/inline.md ================================================================== --- /dev/null +++ modules/markdown/test/inline.md @@ -0,0 +1,71 @@ +Test inline Elements +=== + +Emphasis +--- + + +This one is *emphasized* with `*`. This one is __strongly emphasized__ with `__`. +This one has its delimiter *e\*s\*c\*a\*p\*e\*d* as content. This is a free * +asterisk and a free _ underscore. This is a **strong one**. + +Links +--- + +Use [Google][] and [Yahoo] [] for search and read [News for Nerds][Slashdot] and +[Hacker News] [HN]. Watch videos at [Youtube](http://www.youtube.com "Youtube"). +[News for Nerds][Slashdot]. + +[Google]: http://www.google.de + "Google Homepage" +[Yahoo]: http://www.yahoo.com +[Slashdot]: (News for Nerds) +[HN]: http://news.ycombinator.com 'Hacker News' + +Unknown ref: [bla][foo] + +Code +--- + +An XML declaration looks like this: ``. +The `printf()` function is used for printing to the screen. Show a single +`` ` ``. + +Images +--- + +Here comes an inline graphic ![Inline Image](/path/to/some.jpg "Inline +title"). Here comes a reference ![Ref Image][SomeImage]. + +[SomeImage]: /path/to/some.png "Ref image title" + +Entities +--- + +Here is a copyright symbol: ©. AT&T operator talk. 4 < 5 or 5 > 4. + +Automatic Links +--- + +Write to and visit . +This is an auto-link with ampersand: . + +Inline HTML +--- + +Here is some text in bold. An image tag no
+such file. And here comes a table: + + + + + +
Column AColumn B
+ +Here comes some text. Here comes some text. Here comes some text. Here +comes some text. Here comes some text. Here comes some text. Here comes +some text. + +Here is an inline email link with mailto: . And +here is an inline email link without mailto: . This is +not a valid email link neither is this <@example.com>. ADDED modules/markdown/test/lists.html Index: modules/markdown/test/lists.html ================================================================== --- /dev/null +++ modules/markdown/test/lists.html @@ -0,0 +1,122 @@ +

This is a paragraph of test followed by a list. This is +a paragraph of text followed by a list. This is a paragraph +of text followed by a list. This is a paragraph of text.

+ +
    +
  • This is +a test

    + +

    This is a +test

    + +
      +
    • Bla blubber +bla blubber
    • +
    • Blubber bla +Blubbb... +
    + +
  • +
  • A

  • +
  • B

    + +
  • +
  • C

  • +
  • D +
+ +
    +
  1. test

      +
    • a
    • +
    • b +
    + +
  2. +
  3. test

      +
    1. test

      + +
    2. +
    3. test

      + +
    + +
  4. +
  5. test

      +
    1. test
    2. +
    3. test +
    + +
+ +
    +
  • Another list

    + +
    +

    Quote me +me me me

    + +

    Quote me +me me me

    + +
    +

    Quote quote me

    +
    +
    + +

    Normal paragraph

    + +
    import os
    +os.path.listdir()
    + +
      +
    1. eins

      + +
    2. +
    3. zwei

        +
      • a
      • +
      • b +
      + +
    + +
+ +
+ +
    +
  • test +
      +
    • test
    • +
    • test +
    + +
+ +
+ +
    +
  • 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.

    + +
+ +
    +
  1. 1. 1. Test that this does not recurse + +
+ +
    +
  • * * Test that this does not recurse

    + +
  • +
  • - - Test that this does not recurse

    + +
  • +
  • + + Test that this does not recurse

+ ADDED modules/markdown/test/lists.md Index: modules/markdown/test/lists.md ================================================================== --- /dev/null +++ modules/markdown/test/lists.md @@ -0,0 +1,81 @@ +This is a paragraph of test followed by a list. This is +a paragraph of text followed by a list. This is a paragraph +of text followed by a list. This is a paragraph of text. + +* This is +a test + + This is a +test + + * Bla blubber + bla blubber + * Blubber bla + Blubbb... + +* A +* B + +* C +* D + +1. test + * a + * b + +2. test + 1. test + + 2. test + +3. test + 1. test + 2. test + +* Another list + + > Quote me + me me me + + > Quote me + me me me + + > > Quote quote me + + Normal paragraph + + import os + os.path.listdir() + + 1. eins + + 2. zwei + * a + * b + +*** + +* test + * test + * test + +*** + +* 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. + + +1. 1. 1. Test that this does not recurse + + +* * * Test that this does not recurse + +- - - Test that this does not recurse + ++ + + Test that this does not recurse + ADDED modules/markdown/test/p_br_h_hr.html Index: modules/markdown/test/p_br_h_hr.html ================================================================== --- /dev/null +++ modules/markdown/test/p_br_h_hr.html @@ -0,0 +1,65 @@ +

H1 Setext style heading

+ +

This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a
+paragraph of text.

+ +

H2 Setext style heading

+ +

This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text.

+ +

H1 Atx style heading

+ +

This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text.

+ +

H2 Atx style heading

+ +

This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text.

+ +

H3 Atx style heading

+ +

This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text.

+ +

H4 Atx style heading

+ +

This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text.

+ +
H5 Atx style heading
+ +

This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text.

+ +
H6 Atx style heading
+ +

This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text.

+ +
+ +

This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text.

+ +
+ +

This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text.

+ +
+ +

This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text.

ADDED modules/markdown/test/p_br_h_hr.md Index: modules/markdown/test/p_br_h_hr.md ================================================================== --- /dev/null +++ modules/markdown/test/p_br_h_hr.md @@ -0,0 +1,76 @@ +H1 Setext style heading +==== + + + +This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text. + + +H2 Setext style heading +---- + + +This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text. + + +# H1 Atx style heading + + + + +This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text. + +## H2 Atx style heading + +This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text. + +### H3 Atx style heading + +This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text. + +#### H4 Atx style heading + +This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text. + +##### H5 Atx style heading + +This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text. + +###### H6 Atx style heading + +This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text. + + - - - + +This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text. + + * * * + +This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text. + + _ ____ + +This is a paragraph of text. This is a paragraph +of text. This is a paragraph of text. This is a +paragraph of text. +