#VariousComplements
## メモ
- 方針について
- `Word`の抽象化はそろそろ限界...
- `AutoCompleteSuggest`の処理は `Word`の実態に応じて条件分岐する
- キャレット移動
- JSON全体に`caretSymbol`を追加する
- 読み込み用の[[JSON]]ごとにキャレットの表記を変える必要があるため
- `Word`にメタデータとして持たせる
- `selectSuggestion`の中で臨機応変に処理する
- 文字列に関するものは、`Word`で対応する
- 以下のプロパティを`CustomDictionaryWord`に追加する
- `displayedText`
- `caretSymbol`
- `CustomDictionaryWord`の場合のみの条件特化処理になる
- 今は雰囲気でやっているからそれよりは可読性が上がるはず
==`Word.value`は挿入文字列であり、表示とは無関係にしたい==
### displayedText
`delimiterToDivideSuggestionsForDisplayFromInsertion`が設定されているなら分割して抜き出す。現処理↓
```ts
if (
this.settings.delimiterToDivideSuggestionsForDisplayFromInsertion &&
text.includes(
this.settings.delimiterToDivideSuggestionsForDisplayFromInsertion
)
) {
return (
text.split(
this.settings.delimiterToDivideSuggestionsForDisplayFromInsertion
)[0] + this.settings.displayedTextSuffix
);
}
// こっちは隠すやつなので、displayedTextを短縮 + ...
if (
this.settings.delimiterToHideSuggestion &&
text.includes(this.settings.delimiterToHideSuggestion)
) {
return `${text.split(this.settings.delimiterToHideSuggestion)[0]} ...`;
}
```
- [ ] ==`judge`と`judgePartial`は必ずテストを追加すること==
## 設計の失敗
- `displayedText`を新しく追加したのは失敗だった
- `value`を表示用にして、`insertedText`を挿入用にすべき
- UIとは真逆になるが、検索を考えると表示用を別だしするのはつらみしかない
- 逆に挿入用であれば、挿入時以外に気にすることはないのでシンプル
- どうして気づかなかった。。orz