ページ

2011-05-24

Liquid テンプレートエンジン

最近DjangoやらKayやらを勉強してDjangoのテンプレートやらJinja2やらを見て
Rubyにも似たようなものないかなと思ったらあった。
http://www.liquidmarkup.org/ Liquid

検索しても全然日本語がひっかからないので、サンプルを紹介。

使い方は簡単。
テンプレート文字列をLiquid::Template.parseして、データを与えてrenderすればよいのだ。

テンプレートの基本文法はこんな感じ:
{{ 変数 }} : 変数出力
{{ 変数 | フィルタ }} : フィルタ適用
{% if XXX %} ... {% endif %} : if分岐
{% for XXX in LIST %} ... {% endfor %} : forループ

コード例(Bloggerでインデント面倒だから崩れちゃってるけど):
require 'rubygems'
require 'liquid'

items = [
{ 'name' => "The Oldest Book", 'author' => 'Kota' },
{ 'name' => "Yet Another Book", 'author' => 'Ryohei' },
{ 'name' => "The Lost Book", 'author' => 'Mikako' } ]
title = "Book List"

tmpl = Liquid::Template.parse(DATA.read)
puts tmpl.render({'title' => title, 'items' => items})

__END__
<h1>{{ title|escape }}</h1>
<table>
{% for item in items %}
<tr><td>{{ item.name|escape }}</td><td>{{ item.author|escape }}</td>
{% endfor %}
</table>

ちなみにインストールはgem install liquidでOK.

Template::Toolkitスキーなのですばらしい。erb使いでもちょっとした設定なんかにいかが。

参考:Mini reviews of 19 Ruby template engines

0 件のコメント:

コメントを投稿