初期値を取得する先と優先順位
- cardform第3引数savepage
- basename/0
- form*プラグインの引数による指定
処理のながれ
取得先の存在確認
- チェックするのはbasename,savepage,basename/0
- cardformでやる
初期値を取得するようにform*へ通知
- basenameと取得先ページ名を登録する→CardFuncBase->set_initpage(wiki,base,page)
- ページが登録されているかどうかで初期値を使用するか判断する→CardFuncBase->is_set_initpage()
- ラベル名で値を取得できるメソッドを設ける→CardFuncBase->get_initdata(wiki,label)
- 状態のクリアはformendが行なう→CardFuncBase->unset_initpage()
値の取得
- 各form*がそれぞれ取得し設定する
- 値を取得するにはbasenameと取得先ページ名が必要→事前登録
- 取得先ページを自由に指定できる機構に修正する→例外として実装
- 使用ページの内容をキャッシュする→事前登録時->{basename}->{init}以下にキャッシュ
- 値のキャッシュは負荷低減に寄与しない→値の受渡し方法が問題なのでキャッシュする
初期値への設定
- 引数パース時、引数とし手渡す→引数は最初の値が有効とする
変更点
CardForm
- savepage,basename/0の存在確認
- 上記存在時の登録→set_initpage(wiki,base,page)
CardFuncBase
{cache}{ベース名}{regex}
- {cache}{ベース名}{0}からrename。
{init}
- 初期値取得関連キャッシュ変数%initへのリファレンス
- {init}{basename}
- ベース名
- {init}{basecache}
- ベースページ内容キャッシュ
- {init}{pagename}
- 初期値取得ページ名
- {init}{pagecache}
- 初期値取得ページ内容キャッシュ
{cache}{ベース名}{init}
- ラベル名/ラベル値キャッシュデータのハッシュへのリファレンス
set_initpage(wiki,base,init)
初期値取得ページ名の設定とキャッシュ
- base存在チェック
- base内容読み込み
- $init{basename}へページ名セット
- $init{basecache}へ内容セット
- page存在チェック
- page内容読み込み
- $init{pagename}へページ名セット
- $init{pagecache}へ内容セット
- {init} = \%init
is_set_initpage()
- return define {init}
get_initdata(wiki,label)
- if(define {init})...
- get_data(wiki,{init}{basename},"init",label)
unset_initpage()
- {init} = undef
- %init = ()
do_regex_cache()
- basenameがキャッシュされているか確認→$self->{init}{basepage} eq $base
- basenameをキャッシュから取得する→{init}{basecache}
do_page_cache()
- ページが設定されキャッシュされているか確認→$self->{init}{basepage} eq $base
- 流れはは大きく変わらない
- ページ番号が"init"であった場合にページ内容の取得と結果の保存場所について特別処理する
Form*
- 初期値設定確認→is_set_initpage()
- 初期値取得→get_initdata(wiki,label)
- 初期値を引数の先頭に追加(例外あり)→FormFuncBase修正
FormEnd
- unset_initpage()呼出
FormFuncBase
- CardFuncBaseの継承
- 引数処理変更→同パラメータ存在時、引数先頭側を有効にする
最終更新時間:2005年07月03日 20時48分24秒