今回は「mustache」を学んでみる
呼び方は「マスタッシュ」というらしい。
テンプレートエンジンという事で色々便利に使えそうな気配。
公式サイト
まずは環境を作る。gemでインストールできるそうなので、rvmのgemsetに
mustache用のgemsetを作成し、そこにインストール。
$ rvm gemset create mustache
ruby-2.0.0-p353 - #gemset created /Users/ユーザ名/.rvm/gems/ruby-2.0.0-p353@mustache
ruby-2.0.0-p353 - #generating mustache wrappers.
$ rvm gemset list
gemsets for ruby-2.0.0-p353 (found in /Users/ユーザ名/.rvm/gems/ruby-2.0.0-p353)
=> (default)
global
mustache
rails40
$ rvm 2.0.0@mustache
$ rvm gemset list
gemsets for ruby-2.0.0-p353 (found in /Users/ユーザ名/.rvm/gems/ruby-2.0.0-p353)
(default)
global
=> mustache
rails40
$ gem install mustache
Fetching: mustache-1.0.1.gem (100%)
Successfully installed mustache-1.0.1
Parsing documentation for mustache-1.0.1
Installing ri documentation for mustache-1.0.1
1 gem installed
$ mustache
Usage: mustache [-c] [-t] [-r library] FILE ...
Examples:
$ mustache data.yml template.mustache
$ cat data.yml | mustache - template.mustache
$ mustache -c template.mustache
See mustache(1) or http://mustache.github.com/mustache.1.html
for more details.
Options:
-c, --compile FILE Print the compiled Ruby for a given template.
-t, --tokens FILE Print the tokenized form of a given template.
-r, --require LIB Require a Ruby library before running.
Common Options:
-v, --version Print the version
-h, --help Show this message
ちゃんとインストールできますた。
簡単なサンプルを実行してみる
・data.yml ・・・テンプレートに埋め込むデータ定義ファイル
・template.mustache ・・・テンプレートファイル
mustacheコマンドで実行してみる
$ mustache data.yml template.mustache
- my data
- 32
usage : mustache [データファイル] [テンプレートファイル]
ちゃんと出力してくれている。
ちなみにコメントは
{{! コメント }}
こんな風にビックリマークを付ける。
htmlタグを埋め込む時
普通にhtmlタグを埋め込むとサニタイジングされるので
サニタイジングしたくない時は以下のようにする
結果
$ mustache data.yml template.mustache
- my data
- 32
- <p>
- <p>
- <p>
{{{html}}}のように3重波かっこにするか{{&html}}のように&を付ける
区切り記号を変更
{{}}ではない区切り記号を使いたい場合
例)
{{test}}
{{=<% %>=}}
<% html %>
<%& html %>
<%= {{ }}= %>
{{test2}}
{{=<% %>=}}で区切り記号を<% %>に変更しており
<%={{ }}=%>で元の{{}}に戻している。
※<%& %>はサニタイジング無効化
真偽値を扱う場合
【trueの場合】
{{#showScore}}
・・・
{{/showScore}}
【falseの場合】
{{^showScore}}
・・・
{{/showScore}}
が実行される
複雑なデータを扱う
複数のデータを一覧表示する
実行結果
$ mustache data.yml template.mustache
- name1 (name1@xxxx.com)
- name2 (name2@xxxx.com)
partialsを使う
簡単に言えば外部ファイルに外だしして部品化する
新規に「user.mustache」を作成し、{{> user}}で外部ファイルを呼び出している。
結果は上と一緒。
色々使い方があって便利そう^^
コードジェネレータにも使えそう。
0 件のコメント:
コメントを投稿