Фильтры pandoc
Фильтры pandoc.
Содержание
1 Общая информация
- Фильтры — основное средство расширения функционала pandoc.
2 Варианты реализации фильтров
2.1 Фильтры на языке Haskell
2.1.1 Репозитории с фильтрами haskell
2.2 Фильтры на языке Python
2.2.1 Репозитории с фильтрами python
2.3 Фильтры на языке Lua
- Начиная с версии 2.0 pandoc содержит интерпретатор lua.
- На данный момент используется версия lua 5.3.
2.3.1 Репозитории с фильтрами lua
Основной набор фильтров lua
- Репозиторий: https://github.com/pandoc/lua-filters
2.3.2 Библиотеки для фильтров lua
2.3.3 Подключение дополнительных библиотек
- Фильтры могут потребовать использование дополнительных библиотек.
- Для библиотек может понадобится задание пути расположения.
Функция lua
require
используетpackage.path
для поиска модулей.При старте lua инициализирует эту переменную значением переменной окружения
LUA_PATH
или значением по умолчанию изluaconf.h
, если переменная окружения не определена.При поиске файла
require
использует путь, который немного отличается от обычных путей.- Путь, используемый большинством программ, представляет собой список каталогов, в которых нужно искать данный файл.
- Однако ANSI C (абстрактная платформа, на которой работает Lua) не имеет концепции каталогов.
- Таким образом, путь, используемый
require
, представляет собой список шаблонов, каждый из которых указывает альтернативный способ преобразования имени модуля в имя файла.
Путь — это последовательность шаблонов, разделённых точкой с запятой.
- Любое вхождение строки
;;
в переменную среды окружения замещается значением по умолчанию.- Например, если установить для
LUA_PATH
значениеmydir/?.lua;;
, окончательным путём будет компонентmydir/?.lua
, за которым следует путь по умолчанию.
- Например, если установить для
- Для каждого шаблона
require
будет заменять каждый вопросительный знак на имя файлаfilename
.
- Любое вхождение строки
Пусть путь задан следующим образом:
1?;?.lua;c:\windows\?;/usr/local/lua/?/?.lua
- В модуле делается вызов:
1require "sql"
- Ищутся файлы:
- В модуле делается вызов:
- Я в проекте библиотеки размещаю в каталоге
pandoc/lua
, поэтому задаю переменную среды:1LUA_PATH="pandoc/lua/?.lua;;"