kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

TiddlyWiki/Dev - Core Application

TiddlyWiki Core Applicationを読みます

これはちょっと長いので分割になりそう

スタートアッププロセス

  • module-type: startupタイプのモジュールはstartupという名前の関数をexportする
  • ブートカーネルはブートプロセスの最後でstartup関数を実行する
  • スタートアップモジュールでsynchronous = trueをexportすると非同期に実行される

ストアを拡張する

ストアって何者かちょっとつかめてない気もするんですが
単なる保存場所っていうよりももうちょっとなにかありそうな感じ
ストアはストア、と思って進みます

イベントメカニズム

  • コアプラグインは、Wikiストアに変更があったら通知するイベントシステムを提供する
  • イベントシステムはマイクロカーネルのフックを利用する
  • マイクロカーネルはTiddlerが追加・削除されるとenqueueTiddlerEvent(event)を呼ぶので、この関数をオーバーライドして使う
  • イベントシステム用の関数はwikimethodタイプのモジュールによって追加される

キャッシング

  • コアプラグインはグローバルキャッシュとTiddlerごとのキャッシュを提供する
  • グローバルキャッシュはどのtiddlerが変更されてもクリアされ、Tiddlerキャッシュは関連するTiddlerが変更されたときだけクリアされる
  • キャッシングも同様にフックを使う
  • キャッシングではclearGlobalCache()clearCache(tiddlertitle)をオーバーライトする
  • キャッシュシステム用の関数はwikimethodタイプのモジュールによって追加される

システムTiddler

  • Tiddlerはアプリケーションのビルディングブロックでもあり、ユーザが利用するものでもある
  • それらを区別するため、コアプラグインはシステムTiddlerという考え方でTiddlerを隔離する
  • システムTiddlerは名前が$:/で始まるもの
  • getTiddlers(options)forEachTiddler(callback, options)といった関数は、デフォルトではシステムTiddlerは対象外になっている