2012/09/22

Released Text::Xslate::Bridge::FillInForm::Lite

追記 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

  1. 毎回,Text::Xslate::Manual::Cookbookからcodeをcopyしてた
  2. 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 件のコメント:

コメントを投稿