PandocのカスタムWriterでMarkdownからはてな記法に変換

More than 3 years have passed since last update.


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 

* 今日の日記

今日のご飯。

|*ゴハン|*メニュー|
|朝御飯|パン|
|昼御飯|カレー|
|夜御飯|焼き肉|