TemplateToolkit で 自作プラグインを使う
Perl で Template-Toolkit-2.19 - comprehensive template processing system - metacpan.org を利用していて、
URLのGETパラメータを生成するとき、& や ? を含んでいるパラメータ値をURLエンコードしたい時に、 TT の Filter である uri を利用しました。
しかし、&, ?, ', " 等がURLエンコードされませんでした。
そこで、自作Pluginを利用した時のログを記録@自分用w
-
- モジュール
use strict; use Template; my $template = Template->new( { PLUGIN_BASE => 'Hoge::Template::Plugin', } ); my $output; $template->process('hoge.tt', {name => 'a&a'}, \$output) or die; print $output;
-
- プラグインモジュール
package Hoge::Template::Plugin::Encode; use strict; use Template::Plugin::Filter; use base qw( Template::Plugin::Filter ); sub init { my $self = shift; $self->{_DYNAMIC} = 1; $self->install_filter($self->{_ARGS}->[0] || 'encode_url'); $self; } sub filter { my ($self, $text, $args, $config) = @_; my $ret; if (defined $text){ Encode::_utf8_on($text); # 忘れたので後で書く $ret = $text; } Encode::_utf8_off($ret); $ret; } 1; __END__
-
- テンプレート
[% USE Encode %] I am [% name | encode_url %].
-
- 出力結果
a#29;a
参考
http://www.hakoniwa.net/tt/