Rubyで使えるMarkdownパーサー
なぜだか知らないけどたくさんある。
RDiscountとBlueClothが定番で、Redcarpet(GitHub-Markupで内部的に使われているもの)が元気なニューフェイスといったところか。
違いは速度と拡張記法のサポート具合なのかな。
Markdownはシンプルだけどその分できることは限られているので独自拡張のニーズや実装がいくつもあるようだ。
拡張自体はどこかに仕様があるのか、それとも各ライブラリが勝手にやっているのかちょっと追いかけられていない。
気に入った拡張記法をサポートしているかどうかが選択のポイントか。
速度は速いに越したことはないが、個人ユースではそんなに気にする必要はないように思う。
BlueCloth
BlueClothが古くからあるものなので、後発のものもBlueCloth互換のAPIとなっていたりする。
1.0は遅くて動作精度もイマイチだったようだが、2.0で劇的に改善されたらしい。
RDiscount
内部的にCのライブラリを使っているようだ。
SinatraほかいろいろなライブラリからMarkdownパーサーとして使われている。
とりあえず手堅く行くならこれを選んでおけばいい気がする。
Redcarpet
これもCのライブラリのラッパー。
GitHub-Markupの内部で使われている。
2.0がβ段階で、2.0からはいろいろと拡張記法に対応するらしい。
また変換を担うレンダラーの追加や拡張がやりやすくなるとか。
新しもの好きならこれを選べばいいんじゃないかな。
Kramdown
ちょっと気の利いたMarkdownパーサーを自称するライブラリ。
出力フォーマットとしてLaTeXやPDFへの変換もサポートしている。
拡張記法を持ち、MarkdownをHTMLへ変換するだけでなく、HTMLからMarkdownその他への変換もできる。
Guard::Markdownの内部で使われている。
Maruku
拡張記法をLaTeXやPDFへの変換もサポートしているようだ。
数年前はBlueClothの対抗馬だった。
今はそんなにアクティブにメンテされてはいない。
とはいえMarkdown自体そんなに変化しているわけでもないので、今でも使えないことはない気がするのだがどうだろう。
その他
GitHub-MarkupはMarkdownに限らず複数のマークアップに対応しているものだが、内部的には各マークアップを処理するライブラリに依存している。
Markdownに関してはRedcarpetを利用している。
McBeanはHTMLと各種マークアップの相互変換をサポートするもので、Markdownに関してはRDiscountを利用している。
RedClothはMarkdownではなくTextileを扱うもの。