13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-06-08

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 
* 今日の日記

今日のご飯。

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?