PandocのカスタムWriter
pandocはデフォルトでもmarkdown、docx、latexなど多様なフォーマットに対応しているが、当然ながら「はてな記法」などローカルなフォーマットには対応していない。
ところが、pandocには、実はLuaを使って独自のWriterを書く機能がある。
これを使えばはてな記法だろうがwiki記法だろうがどんなフォーマットにでも書き出すことができる。
以下のコマンドでサンプルのLuaスクリプトを出力することができる。サンプルはHTMLへの書き出しを行なうWriterだ。これを改造し、はてな記法への変換を試みてみよう。
$ pandoc --print-default-data-file sample.lua
基本的には、以下のように、ドキュメントの各要素に対応する関数を書き、変換後の文字列を返すだけだ。
function Link(s, src, tit)
return "[" .. src .. ":title=" .. tit .. "]"
end
以下がsample.luaを修正し、はてな記法に対応させたものだ(一部適当)。私はLuaを書いたのははじめてだが、さほど苦労せず、1時間程度でサンプルを修正できた。
https://gist.github.com/takada-at/e974fb7a23800cb4e448
実行
実行時は、以下のようにluaスクリプトへのパスをpandocのフォーマットとして指定する。
$ pandoc pandoc -t hatena.lua
sample.txt
# 今日の日記
今日のご飯。
ゴハン メニュー
------ ---------
朝御飯 パン
昼御飯 カレー
夜御飯 焼き肉
$ pandoc -t hatena.lua sample.txt
* 今日の日記
今日のご飯。
|*ゴハン|*メニュー|
|朝御飯|パン|
|昼御飯|カレー|
|夜御飯|焼き肉|