Ramaze supports Mustache

Mustacheというのはyharaさんの所で紹介されていた,テンプレートファイルにロジックが書けないテンプレートエンジンのことです.モジュラリティ抜群のRamazeとしてはやはりサポートすべきだろうと勝手に思ったので,パッチを書いて送ったら取り込まれました

使い方

基本他のテンプレートエンジンと変わらないけど,Mustache自体が少し特殊なのでそれについてだけ.MustacheはMustacheクラスを継承したクラスを作ると,それをunderscore化したファイルテンプレートへとマッピングします.その時コンテキストとして渡したものになければそのクラスのメソッドを値として使います.いらないかと思ったけど,一応これサポートしてます.なので

  • foo.mt(mtはテンプレートファイル)*1
<p>{{bar}}</p>
<p>{{baz}}</p>
  • foo.rb
class Foo < Mustache
  def bar
    "(`・ω・´)"
  end

  def baz
    "(´・ω・`)"
  end
end

とファイルを用意してやれば,デフォルト値として使えるようになります.もちろんフレームワークでそんな固定値はあまりメリットがないので,Ramazeのアクション内で

  ...
  def foo
    @bar = "(゚Д゚)"
  end
  ...

とやればbarを上書き出来ます.

自分でパッチ書いておいてなんだけど,else相当がなかったりとかなり厳格なライブラリなので,シンプルな時にはいいかも?という感じかな?

*1:ライブラリとしてはhtmlがデフォルト.これはちょっと…