Open10

Ruby で mermaid 構文のパーサーを書く

S. MiyataS. Miyata

所用で mermaid 構文のパーサーを書く必要があるが、特にライブラリが見当たらなかった。そこで Ruby のマークダウンパーサーを参考にそれっぽいものを書いてみる。動くのを優先。
なお、今回は mermaid 構文の中の erDriagram だけパースできれば良い。

S. MiyataS. Miyata

Kramdown というマークダウンパーサーを使うとマークダウンのテキストを構文木のハッシュに変換できる。
これを拡張して marmaid 構文にも対応させるという作戦でいく。

S. MiyataS. Miyata

kramdown を拡張するにあたり、パースしたい構文を kramdown の構文と対応させる必要がありそう。
kramdown-gist を読んでも block-level element として gist tag を追加する箇所がある。

ざっと kramdown の syntax を押さえる。

S. MiyataS. Miyata

要するに erDiagram を block-level element として、中身は一旦 value として取り込めればよさそうだ。