- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- :Done/自動リンクの仕方を再考 へ行く。
- 1 (2014-02-27 (木) 17:25:18)
- 2 (2014-06-24 (火) 15:27:42)
- 3 (2014-06-24 (火) 15:48:13)
- 4 (2014-06-24 (火) 15:57:58)
- 5 (2015-01-02 (金) 21:52:20)
- 6 (2015-08-01 (土) 01:11:32)
- 7 (2016-08-16 (火) 02:46:14)
- 8 (2016-08-16 (火) 03:07:33)
- 9 (2016-08-16 (火) 03:14:38)
- 10 (2017-02-04 (土) 13:52:36)
- 11 (2017-02-04 (土) 14:06:06)
- 12 (2019-10-07 (月) 09:52:48)
可能性を全通り試したりしない実装方法とは。
区切り文字はつなぎ文字。
つながっているなら必ず1つのリンクに。完全一致しないならメタページへ。つまりDanglingLink化。
でも始まりと終わりの位置が不明。そこは既存の自動リンク方法で探さなければならない。
どうやるか??
区切り文字から末尾一致/先頭一致/完全一致 † 
- 区切り文字の前から末尾一致、区切り文字の後から先頭一致でいずれかのページ名に含まれる単語に一致するかどうか
- 区切り文字の間がいずれかのページ名に含まれる単語に一致するかどうか
(この部分は末尾一致・先頭一致するかも調べなければならない)
…を調べるだけでも順不同パスを見つけることはできそう。
自動リンクの種類 † 
末尾一致・先頭一致の場合は一致し続けた範囲を採用。完全一致の場合は採用するかしないかの二択。
いずれの自動リンクも左優先。解釈が複数あれば先に現れたほうをリンク化する解釈で。
文字同一視 † 
文字の同一視があるので単純な文字列探索にはならない。→ [[]]
あらかじめ解析 † 
区切りで切って、区間ごとに先頭/中間/末尾の判定。3通りのどれとどれになれるか(全て/いずれでもない場合もあり)を解析しておくといい。フラグ3つの構造体…の列。
先頭と末尾はリンクと無縁の文字列も含む。最長で改行文字まで。
フラグだけだと情報不足。先頭/末尾の文字数を記録するといい。先頭にできる文字数(0以上)/末尾にできる文字数(0以上)/中間になれるかのフラグ。いずれでもない区間は0/0/false.
区間情報は文字数だけで可。どうせ先頭からの順次処理なので。
テキストの始まりに近い先頭から処理。先頭から中間の続く限りの範囲(と末尾候補)までで、最も後に現れる末尾を探す。
でも、最左一致は避けたい。最長一致がいい。
字句解析と単語列解析 † 
文字単位で単語を探すのをAC法で行うなら左優先になる。
見つかった単語をどうつなぐかは(区切り文字を目印にして)長さ優先にできる。
どちらも長さ優先にするには??
AC法でゴールしても継続、スタートに戻るまで継続。スタートに戻った時点で適合したページ名があれば長い順に採用。採用したページ名(に対応する部分)に重なる(部分に対応する)ページ名は不採用。ページ名を相手にするよりも、ページ名と一致するページ内容部分のほうを対象にするほうが分かりやすい。