我想为Hakyll帖子启用Ext_autolink_bare_uris pandoc扩展。我按照here的指示进行了操作,一切似乎都正常……除了那个扩展名!posts中的空URI不会转换为链接。其他一切似乎都很正常。下面是site.hs中的代码
import qualified Data.Set as S
import Text.Pandoc.Options
...
customPandocCompiler :: Compiler (Item String)
customPandocCompiler =
let customExtensions = [Ext_autolink_bare_uris]
defaultExtensions = writerExtensions defaultHakyllWriterOptions
newExtensions = foldr S.insert defaultExtensions customExtensions
writerOptions = defaultHakyllWriterOptions {
writerExtensions = newExtensions
}
in pandocCompilerWith defaultHakyllReaderOptions writerOptions所有相关的地方都使用了customPandocCompiler。代码可以正常编译,但不会产生所需的效果。有人能帮我找出原因吗?
提前谢谢你。
发布于 2018-07-24 21:47:18
现在这个问题有点老了,但也许这会对某些人有所帮助。
较新的Hakyll版本使用了Pandoc 2.x,这改变了很多东西(特别是PR #557 )。值得注意的是,扩展的Set模型消失了,取而代之的是自定义类型。
无论如何,这里有一个相当定制的设置,对我们来说工作得很好-禁用一个默认的阅读器扩展,并添加一些额外的扩展。可能还有一种更好的方法来做到这一点。
customRenderPandoc :: Item String -> Compiler (Item String)
customRenderPandoc = renderPandocWith customReaderOptions defaultHakyllWriterOptions
where customReaderOptions = def { readerExtensions = extraReaderExts <> customReaderExts }
extraReaderExts = extensionsFromList [Ext_auto_identifiers, Ext_ascii_identifiers, Ext_emoji, Ext_backtick_code_blocks]
customReaderExts = disableExtension Ext_implicit_figures $ pandocExtensions还要注意,我发现哪些扩展是阅读器,哪些是编写器并不总是显而易见(也不是类型安全的)。我猜有些人可能两者兼而有之。但请检查您是否将您的代码放在正确的位置,因为这是一个很容易出错的错误。
https://stackoverflow.com/questions/45905951
复制相似问题