- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!初期値を取得する先と優先順位
+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
*CardFuncBaseの継承
*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の継承
*引数処理変更→同パラメータ存在時、引数先頭側を有効にする