読者です 読者をやめる 読者になる 読者になる

DiagrammeRでコケる文字がある話を調べたときのメモ

kohskeさんがこんなこと言ってたのでちょっと調べてみたときのメモです。

結論としては、よくわからなかったです。。

やってみる

library(DiagrammeR)
DiagrammeR("
graph LR;
  ・-->B;
")

とかをRStudioで打ち込んでみると、たしかにViewerにこんなエラーが出ます。

f:id:yutannihilation:20150509000349p:plain:w120

これはどうもブラウザが出しているエラーみたいでした(このキャプチャはFirefox)。コンソールを開くと、

"Mermaid Syntax error:"
"Lexical error on line 2. Unrecognized text.
graph LR;  ・-->B;
-----------^"

というエラーが出てました。

パーサがイケてなさげな雰囲気

上のエラーでググると、このIssuesに行き当たりました。

これは%でエラーが出る、という話みたいですが、コメントのやり取りを見るに他にも>とか<とか色々ダメな文字があるっぽいです。 (バージョンが3.3になれば直ってる、と言ってるのでバージョン上げてみましたが、変わりませんでした。。)

たぶん、↓を使って自前で文法を定義してるんですけど、いろいろ考慮漏れがあるんだと思います。

EBNF Parser & Syntax Diagram Renderer [karmin.ch]

まあ、ひとつの文法をつくるというのはそういうものですよね。(温かい目で見守る余裕のある人は)温かい目で見守りましょう。

具体的にダメだった文字

。とか、とか「」とか()とか

さっきのIssueで

Those characters are a bit tricky as they also are the elements that end the text in the node.

とか言ってたので、文の切れ目になりそうな文字がだめなのかな、と思って試してみると、そのへんむりでした。

+とかーとか🍣とか

記号とか絵文字とかむりでした。

半角カタカナとかは大丈夫でした。

é(U+0065 U+0301)とかไม่เปันไรとか

é(U+00E9)はいけるけど、結合文字はむりでした。

結合文字ということで、試してみたらタイ語もむりでした(結合文字がないような単語の場合は大丈夫)。

感想

ダメな文字の法則がよくわからない。たぶんしばらく直らない予感。。

なんだかんだGraphvizは偉大だなーと思いました。