Mustache使ってみる
今更だけど触ったのでログ。logic-lessとうたってるので、ロジックを極力書けないようにしたテンプレートエンジンって感じなのかな。とりあえず使ってみる。
http://mustache.github.com/
まず、gem install mustache した後にirbで実験
irb(main):001:0> require 'mustache' => true irb(main):002:0> Mustache.render("Hello world") => "Hello world" irb(main):003:0> Mustache.render("Hello world {{unko}}", :unko => "this is unko") => "Hello world this is unko" irb(main):004:0> Mustache.render("Hello world {{arg1}} {{arg2}}", :arg1 => "!", :arg2 => "?") => "Hello world ! ?"
以上が、もっとも簡単な利用例かな
次は、クラスを使ったやり方をヤッテみる
class Simple < Mustache def name "kimoto" end def age 3 end end puts Simple.render "test de gozaru by {{name}} {{age}} sai"
出力結果は以下
test de gozaru by kimoto 3 sai
条件分岐
buf = <<EOT {{#in_ca}} true no toki ha koko kimasu {{/in_ca}} EOT # 文字列が表示される puts Mustache.render(buf, :in_ca => true) # 文字列が表示されない puts Mustache.render(buf, :in_ca => false)
Rubyでいうifが
{{#variable}} True! {{/variable}}
でunlessが
{{^variable}} False! {{/variable}}
これか
dict-style viewのテスト
まぁこんな感じでハッシュみたいな感じでも使えますよ的な感じか
view = Mustache.new view[:name] = 'kimoto' view[:value] = 100 puts view.render("hello {{name}} {{value}}yen please")
ビューファイル自動探索機能
テンプレート文字列が指定されてないときは、カレントディレクトリからKlass.mustacheってファイル名のファイルを探してくれるらしい、のテスト。
require 'mustache' class Simple < Mustache def name "simple san" end end puts Simple.render
上記を実行すると、Simple.mustacheが探索される
READMEはこのへんで終わってるので勝手に続けて、配列要素表示するやつ
template = <<EOT <ul> {{# users}} <li>{{ name }}</li> {{/ users}} </ul> EOT puts Mustache.render template, {:users => [{:name => '1san'}, {:name => '2san'}]}
普通に配列要素を単にひとつずつ表示したいときに、それぞれの要素自体を参照するにはどうすりゃいいんだと思ったら、.っていう文字を使えばいいのか
template = <<EOT <ul> {{# ary}} <li>{{.}}</li> {{/ ary}} </ul> EOT puts Mustache.render template, :ary => [1,2,3,4,5]
このへんで飽きた