niszetの日記

アナログCMOS系雑用エンジニアが頑張る備忘録系日記

PandocのLuaフィルタ内で使用可能なLuaのライブラリとか(メモ)

自分向けメモ

ひとまず適当なLuaフィルタを書く。下記みたいに。1回回ればよいのでDocでいいんじゃないかな。

function Doc(e)
  for k,v in pairs(pandoc.pandoc) do
    print(k)
  end
end

これを任意のファイルを入力に、出力を任意の形式にして--lua-filterで先のLuaフィルタを食わせると下記が標準出力に出力される。

debug
pandoc.types
coroutine
pandoc.mediabag
package
_G
pandoc.List
string
os
pandoc.utils
math
pandoc.system
text
utf8
table
io

これがPandoc内で使用可能なパッケージと考えてよいはず。_Gは知らない子ですね…。

pandoc.systemはヘルプと名前の違う関数がいたのでPR出しました。それはまた後程。

なお、最初に書いた、Docに対する処理の書き方は古いらしい。ってK4氏に言われた。ので、本番Lua フィルタでは書かないほうが良いですね!

なお、_Gはおそらくグローバル環境じゃないかなと。ちゃんと調べてないけど^[調べたら確かにグローバル環境のことだった]。もしそうなら何かしらrequireしなくても使えるライブラリや関数、変数のリストということになるのかな。

PANDOC_READER_OPTIONS
rawget
os
loadfile
add_accessors
string
dofile
rawlen
next
rawequal
io
tonumber
make_indexing_function
PANDOC_SCRIPT_FILE
select
_VERSION
getmetatable
PANDOC_API_VERSION
error
type
print
coroutine
load
assert
rawset
table
ipairs
Doc
FORMAT
require
pandoc
pairs
utf8
pcall
math
collectgarbage
xpcall
debug
tostring
PANDOC_VERSION
PANDOC_STATE
package
setmetatable
_G

なんで_Gが見えるんだろう?って気もするけど、グローバル環境下でアクセスできないとそれは困るからこれでいいのか。