追記:この辺りの意見を聞いてhtml_builderなんて初めて知ったので、結局こうした:
package MyApp::Xslate::Bridge;
use strict;
use parent qw( Text::Xslate::Bridge );
use Text::Xslate qw( html_builder );
use Text::Markdown ();
__PACKAGE__->bridge(
function => {
markdown => html_builder { Text::Markdown::markdown(@_) }
}
);
1;
呼び出す側はこう
use Text::Xslate;
my $xslate = Text::Xlate->new(
....,
module => [ 'MyApp::Xslate::Bridge' ]
);
$xslate->render( ... );
おいおい、Text::Xslate素敵すぎるだろ。
今日Markdownを使いたいと思ってちょっと考えたら、これだけで終了した:
use strict;
use Text::Xslate;
my $xslate = Text::Xslate->new(
....
module => [
'Text::Markdown' => [ 'markdown' ]
]
);
print $xslate->render_string( <<EOT, { text => $some_markdown_text });
[% text | markdown | mark_raw %]
EOT
素敵!gfx 先生になら抱かれてもいい。
俺もXSできる人間の端くれとしてxslateの中身をちゃんと把握しよう・・・