TiddlyWiki/Dev - Core Application (5)
TiddlyWiki Core Applicationの続き
トランスクルージョンとテキスト参照
TextReferenceとスペースなしの一単語として書いてあるからテキストリファレンスと書いたほうが雰囲気が出るだろうか
テキスト参照
- テキスト参照は指定されたTiddlerのフィールドの内容を間接的に参照する記法
<tiddlertitle>
とか<tiddlertitle>!!<fieldname>
とか!!<fieldname>
のように指定する- テキストを取得するには、
getTextReference
を使う
トランスクルージョン
- トランスクルージョンは、他のTiddlerの内容をインクルードすること
インクルージョンと言わずわざわざトランスクルージョンという名前をつけたのはなぜだろう
インクルードするよりも何かがすごいってことだと思うんだけれども
- トランスクルードウィジェットが対象のTiddlerをパーズしてその結果のノードを現在のパーズノードに付け加える
- カレントTiddlerは変更されない
- これによってテキスト参照付きのTiddlerをテンプレートとして利用することができる
- ListWidgetもテンプレートの考え方を用いている
- Wiki全体をダウンロードするときは、すべてのTiddlerのリストにテンプレートを適用してHTMLファイルにする
そんなことまでできるとはテンプレート恐るべし
ルートウィジェットとレンダリングスタートアップ
コアプラグインがTiddlerやWikiTextからどうやってUIを構築するか
- スタートアップでrootwidget.jsはベースウィジェットのインスタンスを生成する
- このウィジェットは
$tw.rootWidget
でグローバルに参照可能であり、ブラウザウィンドウのDOM(document
)に対応している - 生成直後はルートウィジェットは子ウィジェットを持たず、いくつかの基本的なイベントハンドラを提供する
- ルートウィジェットがロードされると、次は$:/core/modules/startup/render.jsがトランスクルードウィジェットを作る
- このウィジェットは$:/core/ui/PageTamplateの内容を含み、ブラウザのDOMに関連付けられている
- トランスクルードウィジェットを表示する関数が実行され、トランスクルードウィジェットの更新を行う関数をリスナーに登録する
-
$:/core/ui/PageTamplateをを使い、WikiTextで書かれたTiddlerのみからTiddlyWikiのUIが構築される
-
Open Wiki Pageのリストは、開いているTiddlerのリストを$:/StoryListフィールドに持ち、tm-navigate等のイベントを扱うNavigatorウィジェットによって実現されている
-
$:/core/ui/PageTemplateにトランスクルードされたストーリーTiddlerは、Listウィジェットを用いて$:/StoryListに含まれるTiddlerをトランスクルードする
-
tm-close-tiddler
タイプのイベントが発生すると、指定されたTiddlerが$:/StoryListから削除される
Core Applicationおわり