- 2007/6/20 水曜日 4:14:30
- perl
ここの最後のほうで問題にしてた件。
BEGIN { $Template::Config::STASH = 'Template::Stash::Context'; }; use Template::Stash::Filters; use Template::Stash::Filters::EscapeHTMLByCase; use Template::Stash::Filters::ForceUTF8; __PACKAGE__->config( STASH => Template::Stash::Filters->new( FILTERS => [ Template::Stash::Filters::ForceUTF8->new, Template::Stash::Filters::EscapeHTMLByCase->new, ], ), );
こんな風にしたらいけそうだと思ってやってみたけど
Template::Stash::Contextで
Can't locate object method "component" via package "Template::Stash::Filters" at /usr/local/lib/perl/5.8.8/Template/Stash/Context.pm line 627.
こんなエラーが・・・。
で、いいのか悪いのかもあまり深く理解しないまま以下のような修正をTemplate::Stash::Context(VERSION 1.63)に当ててみた。
--- Context.pm.org 2007-06-20 03:02:46.000000000 +0900 +++ Context.pm 2007-06-20 04:07:23.000000000 +0900 @@ -422,7 +422,7 @@ $rootref = 'ARRAY'; $root = [$root]; } - if ($rootref eq __PACKAGE__ || $rootref eq 'HASH') { + if (eval { $rootref->isa(__PACKAGE__) } || $rootref eq 'HASH') { # if $root is a regular HASH or a Template::Stash kinda HASH (the # *real* root of everything). We first lookup the named key @@ -607,7 +607,7 @@ return undef ## RETURN unless $root and defined $item and $item !~ /^[._]/; - if ($rootref eq 'HASH' || $rootref eq __PACKAGE__) { + if ($rootref eq 'HASH' || eval { $rootref->isa( __PACKAGE__)}) { # if ($item eq 'IMPORT' && UNIVERSAL::isa($value, 'HASH')) { # # import hash entries into root hash # @$root{ keys %$value } = values %$value;
なんかこれで不具合おきたりするんだろーか。
http://search.cpan.org/src/ABW/Template-Toolkit-2.19/t/stashc.t
このテストはとりあえずパスしたけど。。。
- 新しい: フレンジャーはじめりです
- 古い: それTemplate::Stash::Contextで
コメント:0
トラックバック:0
- この記事のトラックバック URL
- https://blog.everqueue.com/chiba/2007/06/20/16/trackback/
- トラックバックの送信元リスト
- Template::Stash::FiltersでTemplate::Stash::Contextを併用する方法 - へぼい日記 より