Как мне конвертировать Markdown в Html используя Text.Pandoc (Haskell)? - PullRequest
1 голос
/ 29 марта 2012

У меня есть следующий код:

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>"

Ответы [ 2 ]

4 голосов
/ 29 марта 2012

Ваш код выглядит нормально для меня, как и вывод. Я получаю такой же вывод от Попробуйте Pandoc .

Если вы добавляете символы новой строки перед вторым заголовком и списком, то он производит вывод, который вы ищете. Я не удивлюсь, если другие реализации Markdown также требуют пустых строк; в конце концов, было бы довольно неприятно, если бы начало строки с дефиса начинало новый список (обдумывание переноса строки).

1 голос
/ 07 апреля 2018

API Pandoc немного изменился.Это работает для меня:

{-# 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 }
...