2012-03-29 67 views
0

我有以下代码:如何使用Text.Pandoc将Markdown转换为Html?

import Text.Pandoc 

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

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

如果我把它应用到一个降价的字符串:
"header\n=======\nA line of text.\n### A list ###\n- apple\n- orange\n- pear"

我结束了:
"<h1 id=\"header\">header</h1>\n<p>A line of text. ### A list ### - apple - orange - pear</p>"

回答

4

您的代码看起来好像没什么问题,输出也是如此。我从Try Pandoc获得相同的输出。

如果您在第二个标题和列表之前添加换行符,那么它会生成您正在查找的输出。如果其他Markdown实现也需要空行,我不会感到惊讶;毕竟,如果用连字符开始一个行开始一个新的列表(想想换行),会非常烦人。

+0

好的,大多数其他实现并不需要,这就是为什么我感到困惑。 – qubital 2012-03-29 17:45:32

+0

不幸的是,我并不知道Markdown的正式规范,所以所有的实现本质上都是模仿[原始的Perl实现](http://daringfireball.net/projects/markdown/)。如果您认为这种行为不合需要,您可能需要[报告错误](http://johnmacfarlane.net/pandoc/bugs.html)。 – ehird 2012-03-29 17:50:33

+1

@ehird你是对的,所以我猜这对你来说应该不会让你意外,markdown的原始描述需要空行: >“段落只是一个或多个连续的文本行,由一个或多个空行分隔。 “ [语法] [1] [1]:http://daringfireball.net/projects/markdown/syntax – dfc 2012-04-02 22:31:51