#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