kopug memo

名古屋で働くとあるWebエンジニアの覚書。

Catalyst で Template::Filters::LazyLoader を使ってみた

package MyApp::V::TT;

use strict;
use base 'Catalyst::View::TT';
use Template::Filters::LazyLoader;

__PACKAGE__->config(TEMPLATE_EXTENSION => '.tt');
__PACKAGE__->config(
    FILTERS => do {
                    my $lazy = Template::Filters::LazyLoader->new;
                    $lazy->base_pkg( 'MyTT::Filters' );
                    $lazy->load;
                  }
);

1;
package MyTT::Filters::String;

sub fs_foo { 'foo!!' }

1;

hoge.tt

<html>
<body>
[% hoge | foo %]
</body>
</html>

実行結果:

foo!!

Static でも Dynamic でも好きなフィルターを MyTT::Filters の中にパッケージ化して作っていける。
デフォルトで Static フィルターの場合は'fs_'、Dynamicの場合は'fd_'を関数名の頭につける必要がある。

詳しくは下記参照
Template::Filters::LazyLoader