Naoki Takezoe
takez****@gmail*****
2006年 1月 11日 (水) 15:34:55 JST
竹添です。 06/01/11 に KG<kg_soft****@yahoo*****> さんは書きました: > KGです。 > > BBS-雑談掲示板/159 > http://fswiki.poi.jp/wiki.cgi?page=BBS%2D%BB%A8%C3%CC%B7%C7%BC%A8%C8%C4%2F159 > > こちらで現在話題に上がっている機能について、複数行プラグインを使って > 簡単に実現できそうなのですが、キャッシュ利用時への対応で調査していたところ > 表題にもある CacheParser::process_cache 内で、キャッシュファイルを一行ずつ > パースする再に、必ず > > for($count=0;$count<=$#lines;$count++){ > $parser->{html} = ""; > : > } > > となって、$parser->{html} を空にしてあります。 > これは、どのような意図があるのかわからないのですが、プラグイン側で上記変数を > 利用して、書き換える処理を行う場合には対応できません。 > もっとも、そのようなプラグインは現在のところないのかもしれませんが・・・。 まず、コアが提供するオブジェクトの内部構造を直接触るような 処理はそもそもプラグイン側で行うべきではないと考えてます。 メソッドや関数の再定義についても同様です(こっちのほうがアレですね)。 やらないと実現できない機能があるのは確かですし、劇的な機能を 実現するために有効な方法ではありますが、フレームワーク的には 想定していない拡張方法だということはご理解ください。 (includeプラグインは例外中の例外です...) ということを踏まえたうえで。 > 現在、私の方で作成中の BBS-雑談掲示板/159 対応のプラグインではこのような処理を行っています。 > http://kgsoft.jf.land.to/fswiki/wiki.cgi?page=FSWiki%2FPlugins%2Finsert > > ただ、複数行対応プラグイン(_ex_block)自体がキャッシュを考慮していなかった為 > 今回、これの対応の為に CacheParser::process_cache 内の $result を $parser->{html} > に置き換えて、$parser->{html} = ""; の行を削除して対応しています。 > > 複数行対応プラグインへの修正になるので、正式にリリースしたいのですが他への影響度が心配です。 > こちらのテスト環境では今のところ問題はなさそうなのですが・・・。 > > CacheParser::process_cache へのこの修正によって影響が出そうなところがあればお教えください。 $parser->{html} = ""; は $resultに1行ずつ追加してるので 1ループごとにクリアしてるだけです(プラグイン部分を処理させるのに 使ってるだけなので、本来は毎回クリアする必要はないと思いますが)。 なので、CacheParser::process_cache側で$parser->{html} の制御を 行うのであれば不要ではないかと思います。 文面ですと修正内容がいまいちよくわからないので、 修正したCacheParserを送っていただけないでしょうか。 -- Naoki Takezoe <takez****@gmail*****>