2007/10/30

[リリース]   0行で作るPerl用テンプレートエンジン

at 21:50JST
 
60行で作るPHP用テンプレートエンジン
http://anond.hatelabo.jp/20071030034313
40行で作るPerl用テンプレートエンジン
http://anond.hatelabo.jp/20071030153111
404 Blog Not Found:perl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン
http://blog.livedoor.jp/dankogai/archives/50940023.html

触発されて表題のPerl用モジュールを作ってみました。

特徴:
・モジュールが小さい。わずか0行
・高機能。
 変数の出力はもちろん、Perlそのままの文字列演算、
 ループや条件分岐に対応します
・拡張が自由
 お好みのサブルーチンを追加して機能を拡張できます

とても便利だと思うので、ぼくのスーパーハッキングテクニックを使ってPerlの配布パッケージに忍び込ませてみました。Perl 5以降をお使いの方なら、すでにこのモジュールを利用可能になっているハズです。CPANとかuseなんたらとかする必要はまったくありません。

使用例:
変数の出力はこんなふうにします。テンプレートタグの開始文字列は「@{[ do {」、終了文字列が「} ]}」です。
my $user_name = 'hirosiki'; 
print <<"_EOF_";
Your name is: @{[ do { $user_name; } ]}
_EOF_


タグの中ではPerlに用意されているあらゆる演算が可能です。出力したいデータを最後に評価するようにしてください。
my $greeting = 'Good morning!'; 
print <<"_EOF_";
Greeting to you:
@{[ do {
"\t" . $greeting;
} ]}
_EOF_


もちろんループも可能です。
my @primes = ( 1, 3 , 5 ); 
print <<"_EOF_";
Prime numbers:
@{[ do {
my $t;
foreach ( @primes ) {
$t .= "\t$_\n";
}
$t;
} ]}
_EOF_


Perlでサブルーチンを書けば、さまざまな機能を自由に追加できます。このモジュールの真骨頂です。
sub escape { 
my $str = shift or return;
my %escaped = (
'&' => 'amp',
'<' => 'lt',
'>' => 'gt',
'"' => 'quot',
);
$str =~ s{([&<>"])(?!amp;)}{'&' . $escaped{$1} . ';'}msxgeo;
$str;
}
my $input = '(Tom & Jerry)->fight';
print <<"_EOF_";
Hanna Barbera:
@{[ do {
escape( $input );
} ]}
_EOF_


このモジュールはGPLv3、または婚姻届(美女に限る)のデュアルライセンスとします。
関連しそうな過去記事:
さらに過去の記事
2009/04 (1)   2008/12 (3)   2008/11 (9)   2008/10 (10)   2008/09 (20)   2008/08 (2)   2008/07 (23)   2008/06 (16)   2008/05 (22)   2008/04 (11)   2008/03 (21)   2008/02 (20)   2008/01 (21)   2007/12 (32)   2007/11 (37)   2007/10 (46)   2007/09 (63)   2007/08 (33)   2007/07 (41)   2007/06 (81)   2007/05 (173)   2007/04 (168)   2007/03 (113)   2007/02 (123)   2007/01 (92)   2006/12 (111)   2006/11 (185)   2006/10 (20)  
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。