I followed this tutorial to create a basic static web page using hakyll. It includes a number of pages rendered from markdown in the posts directory, e.g. 2015-08-12-spqr.markdown.
I prefer asciidoc to markdown, and tried adding an asciidoc 2018-01-23_adoc-user-manual.asciidoc to the post directory.
However, hakyll throws an error when attempting to compile the page:
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
Is this problem that pandocCompiler cannot handle asciidoc?
Is it possible to use asciidoc with hakyll?
Current Pandoc can write Asciidoc but cannot read it: Issue.
Besides, there seems no Asciidoc parser written in Haskell, so there's no pure Haskell solution.
However, Hakyll has unixFilter which can use any command which inputs from stdin and outputs to stdout. Therefore, you can call
asciidoctorcommand for converting.asciidocfile.Here's the step:
1. Install asciidoctor
Ubuntu
Fedora$ apt-get install asciidoctor
Arch Linux$ dnf install asciidoctor
Ruby Gem$ pacman -S asciidoctor$ gem install asciidoctor2. Define pandocCompilerWithAsciidoctor
Add following code to
site.hsreplace
pandocCompilerinsite.hswithpandocCompilerWithAsciidoctor3. Recompile
Note that filename have to be
2018-01-23-adoc-user-manual.asciidocinstead of2018-01-23_adoc-user-manual.asciidoc, or you get error:[ERROR] Missing field $date$ in context for item posts/2018-01-23_adoc-user-manual.asciidoc