使用 Hakyll 自定义 pandoc writer
Custom pandoc writer with Hakyll
我正在尝试编写一个特殊的 Hakyll 编译器来使用 lua 脚本来构建我的网站。我发现这个功能可以满足我的需求:
customWriterCompilerWith :: (WriterOptions -> Pandoc -> IO String)
-> ReaderOptions -> WriterOptions
-> Compiler (Item String)
customWriterCompilerWith customWriter ropt wopt = do
body <- getResourceBody
withItemBody (unsafeCompiler . customWriter wopt) $ readPandocWith ropt body
但是,当我尝试编译这个函数时,出现了这个错误:
• Couldn't match expected type ‘Item Pandoc’
with actual type ‘Compiler (Item Pandoc)’
• In the second argument of ‘($)’, namely
‘readPandocWith ropt body’
在Hakyll文档中搜索后,4.6.8.0
版本和4.9.8.0
版本(我的版本)中readPandocWith
的类型有所不同:
readPandocWith:: ReaderOptions-> Item String-> Item Pandoc -- 4.6.8.0
readPandocWith:: ReaderOptions-> Item String-> Compiler (Item Pandoc) -- 4.9.8.0
我没有在 Hakyll 文档中找到可以帮助我的函数(其类型应该是 Compiler (Item Pandoc)-> Item Pandoc
)。
你知道怎么解决这个问题吗?
您知道另一种使用 LUA 脚本制作自定义 Hakyll 编译器的方法吗?
如@user2407038 所述,以下内容应该有效:
customWriterCompilerWith customWriter ropt wopt = do
body <- getResourceBody
doc <- readPandocWith ropt body
withItemBody (unsafeCompiler . customWriter wopt) doc
要阅读有关 <-
(>>=
的语法糖)的更多信息,我可以推荐 http://learnyouahaskell.com(monad 章节)。
我正在尝试编写一个特殊的 Hakyll 编译器来使用 lua 脚本来构建我的网站。我发现这个功能可以满足我的需求:
customWriterCompilerWith :: (WriterOptions -> Pandoc -> IO String)
-> ReaderOptions -> WriterOptions
-> Compiler (Item String)
customWriterCompilerWith customWriter ropt wopt = do
body <- getResourceBody
withItemBody (unsafeCompiler . customWriter wopt) $ readPandocWith ropt body
但是,当我尝试编译这个函数时,出现了这个错误:
• Couldn't match expected type ‘Item Pandoc’
with actual type ‘Compiler (Item Pandoc)’
• In the second argument of ‘($)’, namely
‘readPandocWith ropt body’
在Hakyll文档中搜索后,4.6.8.0
版本和4.9.8.0
版本(我的版本)中readPandocWith
的类型有所不同:
readPandocWith:: ReaderOptions-> Item String-> Item Pandoc -- 4.6.8.0
readPandocWith:: ReaderOptions-> Item String-> Compiler (Item Pandoc) -- 4.9.8.0
我没有在 Hakyll 文档中找到可以帮助我的函数(其类型应该是 Compiler (Item Pandoc)-> Item Pandoc
)。
你知道怎么解决这个问题吗?
您知道另一种使用 LUA 脚本制作自定义 Hakyll 编译器的方法吗?
如@user2407038 所述,以下内容应该有效:
customWriterCompilerWith customWriter ropt wopt = do
body <- getResourceBody
doc <- readPandocWith ropt body
withItemBody (unsafeCompiler . customWriter wopt) doc
要阅读有关 <-
(>>=
的语法糖)的更多信息,我可以推荐 http://learnyouahaskell.com(monad 章节)。