Pandocでblockdiagを使う
最近、ドキュメント生成ツールとして Pandoc をちょっと試している。Markdownで手軽に書けて、reStructuredTextよりも好みだ。
Pandocというのは「ドキュメント生成ツール」ではなく、正確に言えば「ドキュメント変換ツール」だ。MarkdownからHTMLやPDFへの変換だけでなく、MarkdownからreStructuredTextへの変換や、HTMLからテキストファイルへの変換などもできるようになっている。
そしてその変換のフォーマットとして、Pandocの抽象構文木をそのままJSON形式などでの入出力がサポートされており、この機能を使えばpandoc本体に手を加えずともいろいろな機能を追加できるようになる。ということで、blockdiag を Markdownテキストに記述し、図を生成するフィルターを作成してみた。
このようなMarkdownから、
Example
------------
Following image was generated by blockdiag.
````blockdiag
{
世界の -> こ;
世界の -> み;
世界の -> か;
}
````こんな画像が表示される
ソースはこちら - https://github.com/atsuoishimoto/pandoc-blockdiag-sample
本来はHaskellで書けば、Pandocモジュールを直接使ってもう少しシンプルにかけるが、ここではあえてPythonで書いている。決してHaskellから逃げたのではない、という点をご理解いただければ幸いである。
