我有以下代码:
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>"
答案 0 :(得分:4)
您的代码对我来说很好,输出也是如此。我从Try Pandoc得到了相同的输出。
如果在第二个标题和列表之前添加换行符,则会生成您正在查找的输出。如果其他Markdown实现也需要空行,我也不会感到惊讶;毕竟,如果用连字符开始一行开始一个新的列表(想想换行),那将会非常烦人。
答案 1 :(得分:1)
Pandoc API发生了一些变化。这对我有用:
{-# LANGUAGE OverloadedStrings #-}
module PandocDemo where
import Data.Monoid ((<>))
import Data.Profunctor (dimap)
import Data.Text (Text)
import qualified Data.Text as T
import Text.Pandoc
markdownToHtml :: Text -> Text
markdownToHtml = dimap inp out markdownToHtml'
where
inp = T.unpack
out = either (("Error: " <>) . tshow) T.pack
markdownToHtml' :: String -> Either PandocError String
markdownToHtml' s = writeHtmlString opts <$> readMarkdown def s
where
opts = def { writerHtml5 = True }