記法系変換とシンタックスシュガーが衝突している。互換性 vs 拡張性。
NotationTextの復元 †
関わるもの…
重要なのは言い回しを含むテキスト。
プラグイン要素は曖昧な表記を受け入れるものばかり。monと月曜を書かれたとおりに復元するには?
monと月曜は同値。
シンタックスシュガーはプラグイン要素だけに作れることにする。
ビルトイン要素は利用者に合わせて記法系変換するけど、シンタックスシュガーは記法系に含まれないので指定不可能。また記法系変換があるので元のテキストを保存しておく方法が使えない。プラグイン要素なら記法系変換はしないし、復元時には元のテキストを返すだけ。
ビルトイン要素でシンタックスシュガーがあるもの †
Markdownのように1つの要素に複数の記法がある記法系は復元できる?ビルトイン要素だけど複数のシンタックスシュガーがあるようなもの。
→ WikiTextは残らないので、複数の記法は無理。再編集するときには、複数あるうちの適当なひとつになってしまう。
要素オブジェクトごとに記法(例えば見出しのAtx/Setext)を選ぶことはない。利用者によってどちらかでいいはず。元テキストを復元することはなく、常に好みのほうに変換するので、みんなが自分と同じ好みのように見える。要素が元テキストを保持したり、要素がどちらの見出し記法で書かれたかを記録しておく必要はないので、他の記法系と同様にビルトイン要素で実現できる。Markdownの中でさらに細かい記法系指定があるようなもの。
でも見出しやリンクなどのそれぞれに複数の記法があるので組み合わせは膨大。要素ごとにどう変換するかを指定しなければ利用者に合ったMarkdownにならない。問題はUI。
Markdownのさらに細かい記法系を選ぶUI †
Markdownは同じ要素に複数の記法。編集ビューでどれがどの記法になっていれば嬉しいかを指定するには?
- 事細かく指定させる
- 前例に沿う
その前例を書くときは?
→デフォルト。
デフォルトの一部だけを書き換えることになる…複数の記法が混ざっていたら?
→書き換えられたところから例を採集。
編集前後(の編集に使ったテキスト)の差分生成。差分をMarkdownとして解析してできた要素に、クラス名とMarkdown内の詳しい書式を問う。
「細かく指定」の中に「前例に沿う」を入れてデフォルトにしたい。とりあえず「細かく指定」だけでもいい。
例を示してからでないと利用者にあった記法にならない?
→ 利用者設定にするべきこと。Markdownの複数ある記法のうち、最近使ったものを次回も使うようにする。