很抱歉问这样的问题。但我真的很陌生 Haskell。我在互联网上搜了一整天,但没有找到任何例子。
我有一个用 Python 编写的 pandoc 过滤器(tikzcd.py
)。我想使用该过滤器处理我的博客文章。
我猜我需要使用 unixFilter
或 pandocCompileWithTransform
,但我对 Haskell 的认识确实不足以自行找到解决方案。
所以,能否有人提供一个例子?
-----------更新---------------
@Michael 使用 pandocCompileWithTransformM
和 unixFilter
给出了一个解决方案。它有效,但存在一个问题。
当从命令行使用筛选器时,我将执行以下操作:
pandoc -t json -READEROPTIONS input.markdown | ./filter.py | pandoc -f JSON -WRITEROPTIONS -o output.html
or equivalentlypandoc --filter ./filter.py -READEROPTIONS -WRITEROPTIONS -o html
This command is shorter but it doesn't show the procedures.
但是使用 pandocCompilerTransformM
,它会执行类似以下操作:
pandoc -t html -READEROPTIONS -WRITEROPTIONS input.mardown | pandoc -t JSON | ./filter.py | pandoc -f JSON -WRITEROPTIONS -o output.html
区别在于传递给filter.py
的文本不同:一个是直接从Markdown生成的内容,而另一个是从Markdown生成的HTML中产生的一些文本。如您所知,来回转换总会产生意外问题。因此,我认为可能有更好的解决方案。
附注:我已经开始学习Haskell。希望有一天我能自己解决这个问题。谢谢!
md->json->json->html
,其中Python正在执行json->json
部分——这就是脚本所做的。如果您正在使用“pandoc”可执行文件手动制作HTML,则只需执行以下操作:cat myfile.md | pandoc -t json | ./filter.py | pandoc -f json -t html -s
(使用“-s”用于独立的HTML)。 - MichaelPandoc
类型中的Haskell本机表示形式与您的过滤器读写的json几乎没有区别。如果您编写了一个Haskell过滤器,当然可以跳过json步骤,因为这只是为了让Python过滤器运行而已。 - MichaelreaderOptions
或writerOptions
的双重应用搞砸了事情。这会让人看起来好像是在中途生成了 HTML。 - Michael