Perl: はじめての Xslate

Perl のテンプレートエンジン。Amon2 標準。
シンタックスを TTerse か Kolon (デフォルト) か Clevery かが選択可能ですが、
TTerse がよく使われているようです。

http://xslate.org

 

導入

cpanm Text::Xslate

 

サンプル

Perl: xslate-test.pl (呼び出しコード)

#!/usr/bin/perl
use strict;
use warnings;
use utf8;

use Time::Piece;
use Text::Xslate;
use Encode;

my $template = Text::Xslate->new(syntax => 'TTerse');

my $html = $template->render('views/index.tt', {
	name => 'feb19',
	today => scalar localtime(),
	links => [
		{ text => '<blog>', href => 'http://feb19.jp/blog' },
		{ text => 'Twitter: <@feb19>' },
	],
});

print Encode::encode('utf-8', $html);

TTerse: views/index.tt (テンプレートファイル)

<h1>[% name %]</h1>
<p>[% today.strftime('%Y年%m月%d日') %]</p>
<ul>
[% FOREACH item IN links -%]
	<li>[% IF item.href %]<a href="[% item.href %]">[% item.text %]</a>[% ELSE %][% item.text %][% END %]</li>
[% END #FOREACH -%]
</ul>

実行:

$ ./xslate-test.pl
<h1>feb19</h1>
<p>2014年02月24日</p>
<ul>
	<li><a href="http://feb19.jp/blog">&lt;blog&gt;</a></li>
	<li>Twitter: &lt;@feb19&gt;</li>
</ul>

テキストの HTML エンコードもされる。