http://nyarla.net/blog/perl-tips4
これ使ったら@Catalyst::View::TT::ForceUTF8::PROVIDER_CONFIG_KEYSを書き換えられるじゃん。
色々終わったらPadWalker使って書き直そう。
package MyApp::View::TT; use base 'Catalyst::View::TT::ForceUTF8';
というTTなViewで、
View::TT: START_TAG: '[\[<]%' END_TAG: '%[\]>]'
とかやっても設定が反映されない。
調べてみるとTemplate::Parserにまで設定が行き届いてなかった。どうもTemplate::ParserはTemplate::Provider生成時の引数を使って生成されているようなので、C::V::TT::ForceUTF8を見てみたら
my %args = map { ($_, $config->{$_}) } grep { exists $config->{$_} } @PROVIDER_CONFIG_KEYS; $class->config->{PROVIDERS} = [ { name => 'Encoding', args => \%args, }, ];
となっていて、@PROVIDER_CONFIG_KEYSに指定されているパラメータしか渡されないようになっていた。
Catalyst/View/TT/ForceUTF8.pmをいじって、@PROVIDER_CONFIG_KEYSにSTART_TAG,END_TAGを追加したら設定が反映されるようになったんだけど、ForceUTF8.pmをいじらずに済む方法を考え中。
package MyApp::View::TT; use base qw(Catalyst::View::TT::ForceUTF8); my @PARSER_CONFIG_KEYS = qw(START_TAG END_TAG TAG_STYLE); sub new { my $class = shift; my ( $c, $arguments ) = @_; my $self = $class->SUPER::new(@_); foreach ( grep { exists $self->config->{$_} } @PARSER_CONFIG_KEYS ) { $self->config->{PROVIDERS}->[0]->{args}->{$_} = $self->config->{$_}; } return $self; }DUMP_CONFIG=>1のときに正しいログが出ないけどまあいいや。めんどくさい