Open10

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

38tter38tter

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

38tter38tter

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

38tter38tter

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

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

38tter38tter

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