editor(2)
モジュールは今のところ下記のようにしてみた。
モジュールというかクラスというかオブジェクトというか。。。なんというのが正解なんだろ。ま、いいや。今度JavaScriptの本買おう。すでに持ってたかな?
- Editor
- Caret管理
- Modeに応じた入力の処理
- Modeの変更
- Lineリストの先頭を保持
- Line
- 行の表現
- 隣接行への参照を保持
- 文字列の保持
- 描画のためのDOMNode生成
- Span
- Line中の部分文字列にstyleを適用するときの、その文字列中の位置を表現
- 文字列中の開始位置の保持
- 適用文字列の長さ保持
- SpanList
- 要素にSpanを持つリスト
- Mode
- モード管理 (command / insertion)
上記のようになっているのだが、下記のように変更する予定。
- Pageモジュールを追加
- EditorはPageを管理
- PageがLine、Caretを管理
- Caret管理用にモジュールを追加
今後考えること。
- 複数行にまたがるstyle適用をどう実現するか検討
- 文字選択の実現方法検討
- 文字検索の実現方法検討
- キーワードへの色付けの実現方法検討
描画周りはDOM操作でやる。ブラウザベースだと描画がらくちん。canvas要素は使わない予定。とりあえずpre要素で。