Template::Toolkit用独自フィルタを作る

同僚に投げたらエライ時間がかかっていたので晒しとく。Catalyst::Plugin::Config::YAML と併用してたので初期化の仕方がわからなかったみたい。


lib/MyApp/View/TT.pm

package MyApp::View::TT;

use strict;
use base 'Catalyst::View::TT';

sub new {
    my $self = shift;

    my $conf = $_[-1];
    $conf->{FILTERS} = {
        myfilter => \&MyApp::View::TT::myfilter,
    };
    $self->config($conf);

    $self->NEXT::new(@_);
}

sub myfilter {
    my $text = shift;
    ...
    return $text;
}

んー。