ホーム > perl > Template::Stash::FiltersでTemplate::Stash::Contextを併用する方法

Template::Stash::FiltersでTemplate::Stash::Contextを併用する方法

  • 投稿者: chiba
  • 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::FiltersでTemplate::Stash::Contextを併用する方法

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
https://blog.everqueue.com/chiba/2007/06/20/16/trackback/
トラックバックの送信元リスト
Template::Stash::FiltersでTemplate::Stash::Contextを併用する方法 - へぼい日記 より

ホーム > perl > Template::Stash::FiltersでTemplate::Stash::Contextを併用する方法

検索
フィード
メタ情報

ページの上部に戻る