TiddlyWiki/Dev - Core Application (3)
TiddlyWiki Core Applicationの続き
UIとレンダリングパイプライン
- WikiText → パーズツリー → レンダツリー → DOM →シリアライズ→ 静的HTML
パーザ
- コアプラグインはWikiTextのパーザを提供し、テキストをパーズツリーに変換する
- パーザは
parser
タイプのモジュールとして提供される - パーザはモジュールからパーズのルールをロードする
wikirule
タイプのモジュールでルールを追加できる- 例:horizrule.jsは
---
から<hr>
を作るwikirule
- 例:horizrule.jsは
なんでも拡張可能になってるんだなあ
- html ruleにより、WikiTextに含まれるHTMLタグは
element
タイプの要素となる - html ruleはこっそりWikiTextのWidgetもパーズしている
- その場合、
element
タイプのノードを作る代わりにタグ名の先頭の$
で認識できるようにする
ちょっとこのへん言ってることがわからないけど続きを読めばわかるらしい
- WikiTextがパーズツリーに変換されたら次はそれをウィジェットツリーにする
さっきはレンダツリーって言ったじゃん
- コアプラグインは基本的なウィジェットオブジェクトを提供する
- ウィジェットオブジェクトはパーズノードとDOMノードを取得して、パーズノードに対応するDOM構造を作る
- LinkWidgetは
<a>...</a>
タグに対応するDOMノードを作って、与えられたDOMノードに追加する - パーズノードに子ノードがあれば対応する子ウィジェットも作成される
何言ってるかわからなくなってきたぞ
- これらの機能は基本Widgetから提供される
- 追加のウィジェットを作る場合は
widget
タイプのモジュールをロードする - ベースのウィジェットを拡張したり置き換えたりすることができる
-
ウィジェットモジュールはパーズノードの"type"プロパティによって指定される
-
動的な振る舞いはふたつの方法で追加できる
今日はここまで