その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

Text::XslateにテンプレートのSyntaxをチェックするメソッドが追加されて便利

Text::Xslateのバージョン3.1.0から,テンプレートのSyntaxが正しいかそうでないかをチェックするメソッドが追加されていて便利です.


以下のように,テストしたい対象のテンプレートファイルをvalidate()メソッドの引数として食べさせてあげると,そのテンプレートファイルのSyntaxをチェックしてくれます (@filesの中身はテスト対象となるテンプレートファイルのパスのリスト).

use Text::Xslate;

my $tx = Text::Xslate->new;
for my $file (@files) {
    $tx->validate($file);
}

Syntaxが正しい時には何も起きず,Syntaxが誤っている時は以下のようなメッセージと共に例外が送出されます.

Text::Xslate::Syntax::Kolon: Expected a semicolon or block end, but got 'content', near verride, while parsing templates (/Users/owner/MyApp/tmpl/index.tx:3) at bin/check_tmpl.pl line 16.
----------------------------------------------------------------------------

: verride content -> {

----------------------------------------------------------------------------


以下のように書くと,簡単にテンプレートファイルのSyntaxのTestが一括で出来て便利では無いかと思った次第です.

use Test::More;
use Text::Xslate;

my $tx = Text::Xslate->new;
for my $file (@files) {
    eval { $tx->validate($file) };
    ok !$@, qq/Xslate Syntax OK: "$file"/;
}

done_testing;


大変便利な機能でgfx++という感じですが,なぜかundocumentedな機能だったのでさっきドキュメント書いてPull Requestしました!


[2014/01/08 22:44 追記]
gfxさんにマージしてもらったので次のバージョンあたりから当該機能はドキュメント化されていると思います!
ありがとうございます!