2

我有以下代码:

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

2 回答 2

4

您的代码对我来说看起来不错,输出也是如此。我从Try Pandoc得到相同的输出。

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

于 2012-03-29T17:37:28.540 回答
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 }
于 2018-04-07T01:46:36.247 回答