Text::MicroTemplate::DataSection

__DATA__

__DATA__

@@ index.mt
<html>
 <body>Hello</body>
</html>

@@ bar.mt
? if ($true) {
  Foo
? }

こう言うのが書いてあるとき、Data::Section::Simple を使うと

get_data_section('index.mt');

とすることで該当セクションだけのデータを簡単に取得することができます。 なので普通の Text::MicroTemplate と組み合わせても

render_mt(get_data_section('index.mt'));

って感じで使えてそんなに苦じゃないわけですが、どうせなら中で include とか extends とかで他のセクションのデータとも連携できるようにしたら便利だなーと思い3分クッキングして Text::MicroTemplate::DataSection と言うのを書いてみました。

使い方は簡単、

use Text::MicroTemplate::DataSection 'render_mt';

とすると Text::MicroTemplate::File ベース、

use Text::MicroTemplate::DataSectionEx 'render_mt';

とすると Text::MicroTemplate::Extended ベースの機能が使えるようになります。

あとは render_mt('index.mt') などとすれば __DATA__ からテンプレート出力が行えます。基本ベースクラスのすべての機能がつかえますので、Exを使っている場合は、

? extends 'base';

? block content => sub {
Hello!
? }

とか

?= include 'hoge'

とかもそのまま __DATA__ のなかのテンプレートで使用することができます。Enjoy!

by typester / at 2010-07-03T12:20:00 / perl / Comments(0)