Re:VIEW用PEG記法変更についての取り込み依頼
主に @takahashim さんへ
https://github.com/kmuto/review/blob/kpeg/lib/review/review.kpeg で作業されている内容について。 review.js側でコラム対応の作業をすすめています。 今まで、Headline1つで普通の見出しとコラムの見出しに対応していました。 この場合、コラムの閉じタグへの対応が難しかった(PEG上の理由)のと、得られるASTの形が綺麗にならない(Re:VIEW上の理由)、ビルダの書き方が綺麗にならない(review.js上の理由)、などの問題がありました。 そこで、dlistやulistなどと同じく、コラムを特別扱いする方針に変更しました。 https://github.com/vvakame/review.js/commit/61df8a9e80ac59fc9be0ec71c32d644490c4646f#diff-6b17d9e75efd6d55761794d1bff00fa0 この解釈で正しいか確認すると共に、よろしければkpeg側でも取り込んでいただけたらと思います。 よろしくお願いします。
PS 他にもtable記法どうしよう問題とか考えています。今のところPEGでパースした後のレイヤーで気合で解決かなぁ…?と思っています。
これですが、現状コラム内でコラム見出しよりもレベルが低いHeadlineが許されているわけですが、それについてはどうしましょうか? (とはいえ私の方もコラム対応で行き詰まって放置気味の感があるので、何かしらの対応が決まればそれはそれで良いかとは思います)
コラム内小見出しを使いたがる方はたまにいらして、しょうがなく使ってますね…ややこしくなるので本当は避けたいのですが。
ウッ 知りませんでしたその仕様……。 それはパーサの責務の外…と言いたいところですがパーサのレベルで解決しないと具象構文木がひどいことになってしまいますね…。難しいですね…。
わかめ的には閉じタグ必須にしてしまえばいいのでは、と思うのですがどうでしょうか…(互換性は少し犠牲になりますが…)。 コラム内により高いHeadlineがあることはパース後の工程でエラーにする方針で。 この場合、普通のHeadlineと記法が似すぎているのが問題になると思います(現在のPEGシンタックスの構造はわかめがコラム閉じタグの存在を知らなかったのでHeadlineと一体化した構造になってます)。適切なエラー表示が出せるといいのですが…。
コラム内小見出しの重要性は高くないので切り捨ててしまって良いのでは (確かこの辺りの互換性の方針についてRe:VIEW会議で触れた気がしますが記憶が曖昧になり議事録出し忘れてたので改めて議事メモ読み直してまとめてみます)
議事録めっちゃ欲しい
議事録にも期待しつつ、話を進めてみます。 閉じタグが必須にする変更については、基本的には見出し記法そのものに閉じタグがないところからして、ちょっと設計方針として筋が良くないのかなあと思いました。
少し考えてみての提案としては、処理を2段階に分けて、
- Re:VIEW記法から素朴なASTを作る
- 上記のASTからコラム(場合によっては見出しタグも)の入れ子関係をツリーに反映させた変形ASTを作る
という流れにするのがいいかと思いました(もちろん一気に変形済みのASTを生成してもいいんですが、そこはJS側の希望に合わせます)。以前に見出しも入れ子になるべきでは、という話があったかと思いますが、それも構文的にやるのは大変なので、ASTでの変換規則として対応した方がいいと思います。
追記:そういえばheadlineで===[nonum]という記法があるみたいです(採番をしない見出し用)。
なるほど。 見出しとコラムは全く別のもので、記法が似てるだけかなぁ…。と思い初めていたので、閉じタグ有無の非対称性は気にしなくていいかな!と思ったのでした。 この辺りの常識については僕はよくわかってないので、高橋さんの言う通りにしようと思います。 JS側では高橋さんにご提案いただいたようにAST作ってAST組換して…という手順でやることになると思います(見出しの組み換えのために既にその仕組みは持ってます)。
以下の理解で正しいでしょうか?
= 章1
==[column] こらむだよー
=== コラム見出し1
==== コラム見出し2
== 節だよー
= 章2
は最終的に以下の形になる
├章1
│├こらむだよー
││└コラム見出し1
││ └コラム見出し2
│└節だよー
└章2
となる。
===[nonum]も一週間くらい前に初めて https://github.com/kmuto/review/wiki/Note-for-review-format-spec の存在を知って色々な体液がでそうになりました…。