Xslate, as of 0.1006
Xslateは実行エンジン・パーザ・コンパイラが独立になるように設計してあるため、コンパイル済みの仮想マシンコードを用意すればの実行の際にコンパイラをロードする必要がない。またこのため、パーザ部分だけを切り替えることも比較的簡単にできる。そこで、Template-Toolkitライクな構文を処理するパーザを実装してみた。
#!perl -w use strict; use Text::Xslate; my $tx = Text::Xslate->new( syntax => 'TTerse', string => 'Hello, [% dialect %] world!', ); print $tx->render({ dialect => 'TTerse' }); # => Hello, TTerse world! __END__
このTTerseは今のところ変数展開とIF-ELSIF-ELSE-END, FOREACH-IN-END文しかサポートしていないが、ここから拡張することはそれほど難しくない。コアのほうが落ち着いてきたら使える構文を増やすかもしれない。
また、TTerseの実装に影響を受け、元の方の構文も簡略化することができた。従来は出力するタグ(<:= ... :>)と出力しないタグ(<: ... :>)が分かれていたが、出力するタグは必須ではなくなった。つまり、以下のように、変数展開は<: $var :>でもできる。
#!perl use strict; use Text::Xslate; my $tx = Text::Xslate->new( syntax => 'Kolon', # デフォルトなので省略可 string => 'Hello, <: $dialect :> world!', ); print $tx->render({ dialect => 'Kolon' }); # => Hello, Kolon world!
このほかの構文としては、オリジナル(Kolon)からタグのみ変えたMetakolonを用意してある。これは、Xslateテンプレートそれ自体を構築するテンプレートを書くときに使用することを想定している。