ページ

2015年4月26日日曜日

新しい技術を学んでみる 1 - mustache -

今回は「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 件のコメント:

コメントを投稿