!!!初期値を取得する先と優先順位 +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の継承 *引数処理変更→同パラメータ存在時、引数先頭側を有効にする