3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Xslateのテンプレ内でYAMLを使う

Last updated at Posted at 2013-09-05

静的HTMLを直接書く代わりにText::Xslateを使うこともあります。
そういう場合直接YAMLを書いて(コピペして)処理するというのも便利です。
もちろん、テンプレ内でも配列やハッシュが直接記述できるのですが
静的ファイル生成は書く早さとわかりやすさ優先なのでYAMLはありだとおもいます。
同じような方法でCSV、JSONなども処理できます。

JSONはAPIをからJSONを貰ってHTMLで出力したいときに仮データとして書いておくとどんなHTMLが出力できるのかわかって便利です。

キャッシュがあまり生きないのでテンプレート処理速度重視の書き方ではないと思います。

##Xslate設定

use YAML::Syck;

my $tx   = Text::Xslate->new(
  function => {
  	yaml => sub {
		my $text = shift;
		my $data = YAML::Syck::Load($text);
		return $data;
  	},
  }
);

##テンプレート

yaml.tx
:# macroと併用して使ったりwithで呼び出して共通変数として使ったり
:-> {
---
name : お名前太郎
e_mail: test@test.jp
address: 大阪暑い市ね
:}() | yaml | address;

:macro address -> $address{
<table>
<th>名前</th><td><:$address.name:></td>
<th>住所</th><td><:$address.address:></td>
<th>メール</th><td><:$address.e_mail:></td>
</table>
:}
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?