В Ext_alert есть расширение pandoc, которое обрабатывает оповещения следующим образом:
↪ echo "> [!WARNING]" | pandoc -t html -f gfm
<div class = "warning">
<div class = "title">
<p>Warning</p>
</div>
</div>
Я пытаюсь использовать его в своем проекте hakyll вручную:
myPandocCompiler :: Compiler (Item String)
myPandocCompiler =
pandocCompilerWithTransformM ropt wopt (pygmentsHighlight . shiftHeaders 1)
where
ropt = defaultHakyllReaderOptions { readerExtensions = enableExtension Ext_alerts pandocExtensions }
wopt = defaultHakyllWriterOptions { writerExtensions = enableExtension Ext_alerts pandocExtensions }
Но это не работает.
Я могу обойти hakyll и использовать pandoc только с тем же результатом:
λ> ropt = defaultHakyllReaderOptions { readerExtensions = getDefaultExtensions "gfm" }
λ> wopt = defaultHakyllWriterOptions { writerExtensions = getDefaultExtensions "gfm" }
λ> readerExtensions ropt
Extensions (fromList [Ext_alerts,Ext_auto_identifiers,Ext_autolink_bare_uris,Ext_emoji,Ext_footnotes,Ext_gfm_auto_identifiers,Ext_pipe_tables,Ext_raw_html,Ext_strikeout,Ext_task_lists,Ext_tex_math_dollars,Ext_tex_math_gfm,Ext_yaml_metadata_block])
λ>
λ>
λ> runPure $ writeHtml5String wopt =<< readMarkdown ropt ("> [!WARNING]" :: Text)
Right "<blockquote>\n<p>[!WARNING]</p>\n</blockquote>"
Что я делаю не так?
Как читать Markdown и писать Html5String с помощью pandoc, конвертируя оповещения?





Из Журнал изменений Pandoc, в котором представлено расширение оповещений (выделено мной):
Добавьте расширение уценки оповещений. Это позволяет использовать оповещения об уценке в стиле GitHub в качестве расширения commonmark. Это расширение теперь является стандартным для gfm. Его нельзя использовать с уценкой, только с общей маркой и вариантами.
Изменение с readMarkdown на readCommonMark, кажется, работает так, как вы хотите:
main = T.putStrLn =<< (runIOorExplode $ writeHtml5String wopt =<< readCommonMark ropt ("> [!WARNING]" :: Text))
<div class = "warning">
<div class = "title">
<p>Warning</p>
</div>
</div>
Просмотр исходного кода Hakyll показывает, что он использует readMarkdown под капотом, поэтому вы можете захотеть вызвать readCommonMark напрямую где-нибудь в вашей программе Hakyll.
Спасибо! Смена
readMarkdownнаreadCommonMarkдействительно помогла)