Текущий Pandoc может писать Asciidoc, но не может его прочитать: Issue .
Кроме того, похоже, что парсер Asciidoc не написан на Haskell, поэтому нет чистого решения на Haskell.
Однако Hakyll имеет unixFilter , который может использовать любую команду, которая вводит из stdin и выводит в stdout.Поэтому вы можете вызвать команду asciidoctor
для преобразования файла .asciidoc
.
Вот шаг:
1.Установить asciidoctor
Ubuntu
$ apt-get install asciidoctor
Fedora
$ dnf install asciidoctor
Arch Linux
$ pacman -S asciidoctor
Ruby Gem
$ gem install asciidoctor
2.Определите pandocCompilerWithAsciidoctor
Добавьте следующий код в site.hs
pandocCompilerWithAsciidoctor :: Compiler (Item String)
pandocCompilerWithAsciidoctor = do
extension <- getUnderlyingExtension
if extension == ".asciidoc" then
getResourceString >>= withItemBody (unixFilter "asciidoctor" ["-"])
else
pandocCompiler
и замените pandocCompiler
в site.hs
на pandocCompilerWithAsciidoctor
3.Перекомпилируйте
$ 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