2012-03-29 4 views
0

Ich habe den folgenden Code:Wie konvertiere ich Markdown mit Text.Pandoc in HTML?

import Text.Pandoc 

myWriterOptions = defaultWriterOptions 
    { writerHtml5 = True 
    , writerStrictMarkdown = False 
    } 

markdownToHtml :: String -> Html 
markdownToHtml = writeHtml myWriterOptions . readMarkdown defaultParserState 

Wenn ich es auf eine Abschlags Zeichenfolge gelten:
"header\n=======\nA line of text.\n### A list ###\n- apple\n- orange\n- pear"

ich am Ende mit:
"<h1 id=\"header\">header</h1>\n<p>A line of text. ### A list ### - apple - orange - pear</p>"

Antwort

4

Ihr Code sieht für mich in Ordnung, und so auch die Ausgabe. Ich bekomme die gleiche Ausgabe von Try Pandoc.

Wenn Sie vor der zweiten Überschrift und Liste Zeilenumbrüche hinzufügen, wird die Ausgabe erzeugt, die Sie suchen. Ich wäre nicht überrascht, wenn andere Markdown-Implementierungen auch Leerzeilen benötigen. Schließlich wäre es ziemlich ärgerlich, wenn eine Zeile mit Bindestrich eine neue Liste startet (Think-Line-Wrapping).

+0

Okay, die meisten anderen Implementierungen erfordern das nicht, weshalb ich verwirrt war. – qubital

+0

Leider gibt es keine formale Spezifikation von Markdown, die ich kenne, so dass alle Implementierungen im Wesentlichen [die ursprüngliche Perl-Implementierung] nachahmen (http://daringfireball.net/projects/markdown/). Sie könnten [einen Fehler melden] (http://johnmacfarlane.net/pandoc/bugs.html) melden, wenn Sie dieses Verhalten für unerwünscht halten. – ehird

+1

@ehird Sie waren richtig, also denke ich, es sollte Sie nicht überraschen, die ursprüngliche Beschreibung von Markdown erfordert die leeren Zeilen: > "Ein Absatz besteht aus einer oder mehreren aufeinanderfolgenden Textzeilen, getrennt durch eine oder mehrere Leerzeilen. " [Syntax] [1] [1]: http://daringfireball.net/projects/markdown/syntax – dfc