2

我想为 Hakyll 帖子启用Ext_autolink_bare_uris pandoc扩展。我按照此处给出的说明进行操作,一切似乎都在工作……除了那个扩展!帖子中的裸 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用于所有相关的地方。代码可以正常编译,但不会产生预期的效果。谁能帮我找出原因?

先感谢您。

4

1 回答 1

0

问题现在有点老了,但也许这会对某人有所帮助。

较新的 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

另请注意,我发现哪些扩展是阅读器和哪些作者并不总是显而易见的(也不是类型安全的)。我想有些可能两者兼而有之……但请检查您是否已将其放在正确的位置,因为这是一个简单的错误。

于 2018-07-24T13:47:17.977 回答