Catalyst::View::Xslateでfunction追加してみた。

Catalyst::Helper::View::Xslateで生成した、Myapp::View::Xslateにfunctionを追加してみました。

syntaxは、TTerseにしてます。
(元々使ってたTT2用のテンプレートファイルを使ってるので、、)

package Myapp::View::Xslate;
use Moose;

extends 'Catalyst::View::Xslate';

has '+syntax' => ( default => 'TTerse' );
has '+module' => (
    default => sub { [ 'Text::Xslate::Bridge::TT2Like' ] }
);

has '+function' => (
    default => sub {
        +{
            hoge => sub {
                return 'hoge';
            },
            foo => sub {
                my ( $text ) = @_;
                return $text;
            }
        },
    }
);

これで、テンプレートで、hogeとfooが使えるようになりました。

<!-- 'hoge'を返す -->
[% hoge() %] -> hoge

<!-- 引数を渡すとそのまま返す -->
[% foo('aaa') %] -> 'aaa'

以上、メモでした。