目標
- タイルスクリプタでメソッドの再利用をもっと有効にする。
- タイルスクリプタのライブラリを作成出来る仕組み
- 二つ以上の引数も利用出来るように
- ブラウザから定義した物も使えるように
方針
- 利用はタイルで行えるようにする。定義はテキストで行う。
- タイルで二つ以上の引数のメソッドを定義するのは後回し
調査
- [失敗]タイルで二つ以上の引数を取るメソッドを定義出来るか
- タイルで二つ以上の引数定義をサポートする場合、まず引数なしのメソッドを定義し、メソッド名を2引数の物に改名するという方法を取る。
- ScriptEditorMorph>>renameScriptTo: を実行する状況を調べる。ここで複数引数がおかしくなる。
- メソッドがビューワとスクリプトエディタに表示される仕組み
- ビューワへは CategoryViewer>>phraseForVariableFrom:
- スクリプトエディタへは
- 他の環境の調査
- Self 。タイルで苦労するならテキストベースでやってしまう方が簡単か? http://languagegame.org:8080/propella/52
- クロッケーを試してみる。
- ビューワの名前空間 Vocabulary
- Public Object Vector eToys しか機能していない。デモンストレーション時切り替えるには有効か?
- Vocaburaly のクラス変数 AllStandardVocabularies にはシステム標準の Vocaburaly が入っている。
- AllStandardVocabularies <>- Dictionary of Vocaburaly
- Vocaburaly にはいくつかサブクラスがあり、Vocabulary>>categoryListForInstance:ofClass:limitClass: を実装する事によって表示するカテゴリを決める。
- StandardViewer>>chooseVocabulary で候補が挙がる。
- ビューワからカテゴリを選んでスロットが表示される仕組み
- CategoryViewer>>categoryWording: カテゴリ選択
- 例:カテゴリビューワを inspect して、 self categoryWording: 'basic'
- Player(Object)>>tilePhrasesForCategory: カテゴリ inViewer: ビューワモルフ
- カテゴリに属するスロットの ViewerLine の配列を返す
- Player>>methodInterfacesForScriptsCategoryIn: ボキャブラリ MethodWithInterface の配列を返す
- Player>>methodInterfacesForScriptsCategoryIn: を改造して動的に UniclassScript を生成する事で。Player のサブクラスに自分で書いたメソッドも表示されるようにする。
- CategoryViewer>>phraseForVariableFrom: aMethodInterface スロット一行分(ViewerLine)を返す。
- CategoryViewer>>categoryWording: カテゴリ選択
MethodInterface の構造
- selector セレクタのシンボル
- argumentSpecifications 引数情報 (Variable オブジェクト)
- resultSpecification 帰値情報 (ResultSpecification オブジェクト)
- attributeKeywords 使われてないみたい
- defaultStatus ビューワに出す時のデフォルトの状態 (#ticking, #paused, #normal, etc.)
- ScriptStatusControl が表示されるかどうかは、Player class scripts に登録されているかどうかで決まる。
- CategoryViewer>>chosenCategorySymbol: カテゴリの選択
- メソッドのビューワに表示される時の形
- メソッドの ScriptEditor に表示される時の形
- ビューワを自分で作れるようにする。
- ビューワに何が表示されるか?
- カテゴリ選択ボタンを押した時 CategoryViewer>>chooseCategory
- ブラウザで追加したメソッドもビューワに表示されるようにする。
- 2 引数以上でも表示されるか?
- 自動的にプロパティはプロパティらしく表示されるのか?