追記 2012-10-03
Don't use this module. You should use Text::Xslate(ver 1.5018 or higher) and html_builder_module option. See Text::Xslate::Bridge::FillInForm::Lite for detail.
Tex::Xslate側でhtml_builderをかませるhtml_builder_moduleオプションが追加されたので,このモジュールはdeprecatedになりました. 詳しくはText::Xslate::Bridge::FillInForm::Liteをご確認ください.
これから以下のようにfillinformをかけます
use Text::Xslate;
my $txt = Text::Xslate->new(
html_builder_module => ['HTML::FillInForm::Lite' => ['fillinform']]
);
Dancerのconfigでは以下のように指定してください
template: "xslate"
engines:
xslate:
html_builder_module:
- "HTML::FillInForm::Lite"
- ["fillinform"]
ご対応いただいたgfxさん,patchを書いていただいたtokuhiromさん,ありがとうございました!
追記ここまで
LINK
INSTALL
$ cpanm Text::Xslate::Bridge::FillInForm::Lite
HOW TO USE
use Text::Xslate;
my $txt = Text::Xslate->new(
module => ['Text::Xslate::Bridge::FillInForm::Lite']
);
my $output = $tx->render_string(<<'T', { q => { foo => 'bar' } } );
: block form | fillinform($q) -> {
: }
T
MOTIVATION
- 毎回,Text::Xslate::Manual::Cookbookからcodeをcopyしてた
- Dancer::Template::XslateのようにText::Xslate#newにfunctionを渡せない時がある
Dancerのconfigはyaml形式のためcodeを直接書けない.moduleオプションは文字列で渡せるので問題ない
template: "xslate"
engines:
xslate:
module:
- "Text::Xslate::Bridge::FillInForm::Lite"
一応,以下のように書けば対応はできるがめんどくさい
package MyApp;
use Dancer ':syntax';
use Text::Xslate qw(html_builder);
use HTML::FillInForm::Lite qw(fillinform);
our $VERSION = '0.1';
set 'engines' => {
'xslate' => {
function => {
'fillinform' => html_builder(\&fillinform)
}
}
};
get '/' => sub {
template 'index', { q => { foo => 'bar' } };
};
true;
追記 2012-09-24
Text::Xslateとしてはラッパー的なpluginが溢れるのはよくないよねという方針だったらしいので、tokuhiromさんが汎用的に使えそうな案をいくつか出してくれた。
Re: Text::Xslate::Bridge::FillInForm::Lite
3番目のText::Xslate#newにhtml_builderオプションを追加する方針が良さそうに思う。
上記patchが取り込まれるかはまだわからないが、取り込まれた場合はこのmoduleはdeprecatedにする予定
0 件のコメント:
コメントを投稿