snapを使用して、この関数を使用して、マークダウンからテキストを作成するスプライスを作成しました。
markdownToHTML :: T.Text -> [Node]
markdownToHTML = renderHtmlNodes . (writeHtml writeOpts) . readMarkdown readOpts . T.unpack
where
readOpts = defaultParserState
writeOpts = defaultWriterOptions
{ writerStandalone = False
, writerHtml5 = True
, writerStrictMarkdown = False
}
さて、たとえば、このマークダウンを与えると
# Hi
Lorem ipsum something somthing
# Stuff
[a link](http://twitter.com/)
次の HTML が生成されます。
<h1 id='hi'>Hi
</h1>
<p>
Lorem ipsum something somthing
# Stuff
<a href='http://twitter.com/'>a link</a></p>
の前にいくつの改行を入れ#
ても、段落に押し込まれます。
おかしなことに、同じマークダウンを pandoc のデモ サイトにダンプすると、正しい Html 出力が生成されます。
私のプロジェクトの完全なコードは、必要に応じてここにあります。