Импорт модулей lua и их использование с фильтром lua pandoc - PullRequest
1 голос
/ 10 мая 2019

Pandoc изначально поддерживает фильтр lua с помощью аргумента --lua-filter.Однако мне интересно, какую версию lua он использует и можно ли импортировать в нее модули lua, такие как luacom (который, я считаю, опирается на код C).Это часть моего исследования по созданию фильтра, который читает таблицу Excel и преобразует их в таблицу pandoc.

1 Ответ

2 голосов
/ 11 мая 2019

Как правило, можно проверить версию Lua, запустив print(_VERSION). То есть, выполнение этого в вашей оболочке должно работать:

pandoc --lua-filter <(echo 'print(_VERSION)') <<< ''

Старые версии pandoc могут быть скомпилированы с любым из Lua 5.1, Lua 5.2, Lua 5.3 или LuaJIT. Однако поддержание совместимости было обременительным, поэтому сопровождающий пакета HsLua , используемого pandoc (I), прекратил поддержку более старых версий около года назад. Если вы используете pandoc 2.3.1 или новее, pandoc гарантированно содержит Lua 5.3.x.

Загрузка чистых библиотек Lua не будет проблемой и должна работать так же, как и с простым исполняемым Lua-файлом. Единственная проблема может заключаться в том, что значение по умолчанию LUA_PATH, установленное в pandoc, отличается от того, которое используется в других программах. Это может произойти, если pandoc не был скомпилирован для общесистемной версии Lua. LuaRocks может помочь, просто запустите eval "$(luarocks path)".

Так же, как и с чистыми библиотеками Lua, библиотеки C Lua должны просто работать, если pandoc был скомпилирован как нестатический двоичный файл. Однако двоичные файлы, отличные от Windows, представленные на веб-сайте pandoc и на GitHub, являются статическими, и динамическая загрузка библиотек C будет не работать.

Мы поддерживаем основанные на Alpine образы Docker , pandoc/core и pandoc/latex, которые скомпилированы для общесистемной версии Lua. Это может быть хорошим вариантом, если менеджер пакетов вашей платформы не поставляет последнюю версию pandoc, не может использовать статически скомпилированный двоичный файл, и вы не хотите компилировать pandoc самостоятельно. Если вы хотите увидеть поддержку другого базового образа, такого как Ubuntu, просто поднимите билет.

...