kb84tkhrのブログ

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

TiddlyWiki/Dev - Core Application (2)

TiddlyWiki Core Applicationの続き

タグ

  • コアプラグインはTiddlerにタグを付ける仕組みを提供する
    • 特定のタグを使ってTiddlerを取得する
    • { tag: [tiddler1, tiddler3, tiddler3] }のようなハッシュマップを取得する
    • 特定のタグがついてないTiddlerのリストを作ったりイテレートする
  • タグは"tag"という名前でTiddlerに直接保存される

フィルタ

  • フィルタをパイプラインのように並べることができる
  • 例:[tag[task]!tag[done]interesting[very]]
  • これは、"task"というタグがついていて、”done"というタグがついてなくて、"interesting"フィールドが"very"であるTiddlerを通す
  • ほかにもTiddlerのリストをソートするフィルタや、テキストやタグから指定した文字列を検索するフィルタもある
  • filteroperatorタイプのモジュールでフィルタを追加することもできる

システムタグ

  • タグやフィルタはコアプラグイン内でも用いられる
  • システムTiddlerと同様、$:/で始まるタグはシステムタグと呼ばれ、通常は隠されている

保存方法の拡張

  • マイクロカーネルには、単純なストアと、TiddlerをJSONファイルや現在のHTMLファイルのDOMからロードするデシリアライザしかない
  • それ以外のTiddlerの保存や同期の手段は$:/core/modules/syncer.jsのグローバルモジュールとして提供されている
    • Wiki全体を保存する
    • ひとつのTiddlerをファイルに保存する
    • ローカルのWikiストアとリモートのWikiストアを同期する
  • syncerモジュールはイベントシステムを使い、Tiddlerが更新されたらリモートストアと同期する
  • saveWiki(options)関数はWiki全体を保存したり単独のTiddlerをダウンロードしたりする

デシリアライザ

  • tiddlerdeserializeタイプのモジュールはさまざまな表現からTiddlerを生成する関数を提供する
  • それらの関数はappilcation/jsontext/htmlなどのタイプと関連付けられていて、生成されたTiddlerをJavaScriptのオブジェクトとして返す
  • デシリアライザはsyncerモジュールの管理対象ではなく、そのコンセプトはマイクロカーネルの一部である
  • load-modulesスタートアップモジュールは、追加のでシリアライザをロードしてストアに保存する

セーバ

  • saverタイプのモジュールはWiki全体を保存する関数を提供する
  • セーバは3つのメソッドをサポートする
    • saveはユーザが保存をしようとしたときに使われる
    • autosaveはTiddlerが更新されたときなどにTiddlyWikiが自動的に呼び出す
    • downloadはあるTiddlerが明示的にダウンロードされるときに用いられます
  • セーバモジュールはふたつの関数をexportする
    • canSave(Wiki)はそのモジュールが作業できるかどうかを返す
    • create(Wiki)はセーバオブジェクトのインスタンスを返す
  • セーバオブジェクトはinfoプロパティとsave(text, method, callback)関数を提供する
    • infoプロパティは名前、優先度、サポートするメソッドの配列を含む
    • saveメソッドはUIからのメッセージによって起動する
  • Syncerモジュールは、リクエストされたメソッドを処理できるセーバのうち、優先度が最も高いものを使う

ちょっとうまく訳せてないかもしれない
コード読むか動かすかして確かめないと自信ない

同期アダプター

  • syncadaptorタイプのモジュールはTiddlerのリストの取得と、単一のTiddlerのロード・セーブ・削除の機能を提供する
  • TiddlerのリストはSkinnyTiddlers、つまりテキストのないTiddlerとして与えられる
  • ログイン・ログアウトのための関数を提供し、リモートサーバとの同期を可能にする
  • Syncerモジュールは$:/config/SyncFilterに合致するTiddlerは同期しない