代码之家  ›  专栏  ›  技术社区  ›  mherzl

是否可以将asciidoc与hakill一起使用?

  •  1
  • mherzl  · 技术社区  · 5 年前

    我跟随 this tutorial 使用hakill创建基本静态网页。它包括许多从标记中呈现的页面 posts 目录,例如 2015-08-12-spqr.markdown .

    我更喜欢asciidoc而不是markdown,并尝试添加asciidoc 2018-01-23_adoc-user-manual.asciidoc post 目录。 然而, hakyll 尝试编译页时引发错误:

    Initialising...
      Creating store...
      Creating provider...
      Running rules...
    Checking for out-of-date items
    Compiling
      updated templates/default.html
      updated about.rst
      updated templates/post.html
      updated posts/2015-08-12-spqr.markdown
      updated posts/2015-10-07-rosa-rosa-rosam.markdown
      updated posts/2015-11-28-carpe-diem.markdown
      updated posts/2015-12-07-tu-quoque.markdown
      [ERROR] Hakyll.Web.readPandocWith: I don't know how to read a file of the type Binary for: posts/2018-01-23_adoc-user-manual.asciidoc
    CallStack (from HasCallStack):
      error, called at lib/Hakyll/Web/Pandoc.hs:66:31 in hakyll-4.12.5.0-8ZITvFN5YREEKv6B76SCAd:Hakyll.Web.Pandoc
    

    这个问题是不是 pandocCompiler 无法处理 asciidoc ? 可以用吗 阿西多克 具有 哈基尔 ?

    1 回复  |  直到 5 年前
        1
  •  5
  •   ymonad    5 年前

    当前PanDoc可以写入asciidoc,但无法读取: Issue .

    此外,似乎没有用haskell编写的asciidoc解析器,所以没有纯的haskell解决方案。

    然而,哈基尔已经 unixFilter 它可以使用从stdin输入并输出到stdout的任何命令。因此,你可以打电话给 asciidoctor 转换命令 .asciidoc 文件。

    步骤如下:

    1。安装asciidocker

    乌邦图

    $ apt-get install asciidoctor

    费多拉

    $ dnf install asciidoctor

    ARCLinux

    $ pacman -S asciidoctor

    红宝石

    $ gem install asciidoctor

    2。定义PandoCompilerWithAsciiDoctor

    将以下代码添加到 site.hs

    pandocCompilerWithAsciidoctor :: Compiler (Item String)
    pandocCompilerWithAsciidoctor = do
      extension <- getUnderlyingExtension
      if extension == ".asciidoc" then
        getResourceString >>= withItemBody (unixFilter "asciidoctor" ["-"])
      else
        pandocCompiler
    

    代替 pandocCompiler 在里面 地点HS 具有 pandocCompilerWithAsciidoctor

    三。重新编译

    $ stack build
    $ stack exec site rebuild
    

    注意,文件名必须是 2018-01-23-adoc-user-manual.asciidoc 而不是 2018-01-23_adoc-user-manual.asciidoc ,或者出现错误: [ERROR] Missing field $date$ in context for item posts/2018-01-23_adoc-user-manual.asciidoc

    推荐文章