Xslateでtemplateファイルにアクセスする。
2015年1月27日
XslateのCookbookに書いてあったんですけど、slurp_templateをoverrideすると元のtemplateにアクセスできるようです。
Amon2でやるならこんな感じ。
とりあえずMyApp以下にXslate.pm(名前はなんでもいいけど)ってのを作って、Viewからはそいつを呼ぶようにします。
package MyApp::Xslate;
use parent qw/Text::Xslate/;
BEGIN { Text::Xslate->import(qw/html_escape html_builder/) }
sub slurp_template {
my($self, $input_layer, $fullpath) = @_;
my $content = $self->SUPER::slurp_template(
$input_layer,
$fullpath,
);
### process $content ###
return $content;
}
1;
package MyApp::Web::View;
use MyApp::Xslate;
my $view = MyApp::Xslate->new(+{
});
これで、overrideできました。
MyApp::Xslateの$contentは、元のtemplate(素のtemplate)が入ってるんで、キャッシュされる前に何か処理入れたい場合はこいつを加工してやれば色々できそう。