• 追加された行はこの色です。
  • 削除された行はこの色です。

RIGHT:[[:t/自動リンク]] [[:t/順不同]] [[:t/実装]]

可能性を全通り試したりしない方法とは。

区切り文字はつなぎ文字。
つながっているなら必ず1つのリンクに。完全一致しないならメタページへ。つまりDanglingLink化。

でも始まりと終わりの位置が不明。そこは既存の自動リンク方法で探さなければならない。
どうやるか??



***区切り文字から末尾一致/先頭一致/完全一致 [#mca6c327]
- 区切り文字の前から末尾一致、区切り文字の後から先頭一致でいずれかのページ名に含まれる単語に一致するかどうか
- 区切り文字の間がいずれかのページ名に含まれる単語に一致するかどうか

…を調べるだけでも順不同パスを見つけることはできそう。



***自動リンクの種類 [#a2f6c727]
- 区切りを含まない自動リンク
- 区切りを含む自動リンク
-- 区切り前に1文字以上の末尾一致と、区切り後に1文字以上の先頭一致
区切り前後の末尾一致/先頭一致はリンクに必須。
-- 区切り間が(いずれかのページ名に含まれる単語に)完全一致
その繰り返し…の前後が、区切り前後の末尾一致/先頭一致**なら**その区切り間を採用してリンクに含める。
リンクできるのなら区切り間をできるだけ多く含めたい。
-- ドキュメントのほうで駆動

末尾一致・先頭一致の場合は一致し続けた範囲を採用。完全一致の場合は採用するかしないかの二択。

いずれの自動リンクも左優先。解釈が複数あれば先に現れたほうをリンク化する解釈で。


***文字同一視 [#n0de7d31]
文字の同一視があるので単純な文字列探索にはならない。→ [[]]



***あらかじめ解析 [#m9b570aa]
区切りで切って、区間ごとに先頭/中間/末尾の判定。3通りのどれとどれになれるか(全て/いずれでもない場合もあり)を解析しておくといい。フラグ3つの構造体…の列。

フラグだけだと情報不足。先頭/末尾の文字数を記録するといい。先頭にできる文字数(0以上)/末尾にできる文字数(0以上)/中間になれるかのフラグ。いずれでもない区間は0/0/false.

区間情報は文字数だけで可。どうせ先頭からの順次処理なので。

テキストの始まりに近い先頭から処理。先頭から中間の続く限りの範囲までで、最も後に現れる末尾を探す。