draft-jsを使ってみる続き
キーバインド
keyBindingFn
で定義される
getDefaultKeyBindingをフォールスルー時に使うと良い
フォールスルー(fall through)
switchのcaseをbreakしないような処理
カスタマイズ
デフォルトをフォールスルーニした関数を定義して、それをEditorクラスに指定するのね
これもモンキーパッチ(reduxのmiddlewareにみた)と呼んで良いのかな
やはり批判的な意味を含むニュアンスなのね。
モンキーパッチ
モンキーパッチ - Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%B3%E3%82%AD%E3%83%BC%E3%83%91%E3%83%83%E3%83%81
ゲリラー>ゴリラー>モンキーー>ダックパンチング
若手エンジニア/初心者のためのRuby 2.1入門(12):難しいが強力! Rubyのメタプログラミング、self、特異クラス/メソッド、オープンクラスとモンキーパッチ (4/4) - @IT
http://www.atmarkit.co.jp/ait/articles/1501/06/news028_4.html#03
メタプログラミング的、黒魔術的、用法用量を守ること
キーバインド変更の構造
- keyBindingFn: バインドの分岐を通ってコメンド名を判別
- handleKeyCommand: コマンド名を受け取ってコマンド実行
フォーカスマッピング
フォーカスの制御を外だし
宣言的ではなくなるが、フォーカスの部分は開発者がシンプルに使えるように外だしした
エディタコンポーネントのpublicメソッドfocus()を外から呼び出せる
宣言型プログラミング
宣言型プログラミング - Wikipedia
https://ja.wikipedia.org/wiki/%E5%AE%A3%E8%A8%80%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
命令型プログラムでは目的を達成するための方法を「手続き」として示すのに対し、宣言型プログラムでは達成すべき目的(出力)を示して、それを実現する手続きはシステムに任せるわけである。
DSLやSQL的なイメージ。
エディタをラップしたときにはfocusを自分で呼ぶ
paddingのためにdivで囲んだ時にエディタのそとのdivのフォーカスなどを伝えるときの記述の例。
テキストエディタのコード例
reduxでよくあるやり方に似てる、自分で定義したメソッドじゃなくて元からのEditorのメソッドに紐づける感じかな
コンストラクタで初期化の際に、参照できるようbindにする、このことをなんと呼ぶのかな