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要素で。