2008年12月24日水曜日

ERBを使ってみました。

こんにちはモリモルです。
クリスマスイブですね。

今回は、erbライブラリのERBクラスを使ってみます。
ERBは、eRubyのRubyによる実装です。
eRubyスクリプトはテキストファイルにRubyスクリプトを埋め込めるのでPHPみたいな感じで使えるようです。




1、ERB.new(eRubyスクリプト, セーフレベル, トリムモード) で生成してから、
2、ERB#run(bind) ---> 標準出力
  ERB#result(bind) ---> String

で、eRubyスクリプトを実行できます。

トリムモードは、"-"、"%"などがあります。
eRubyスクリプトは改行やインデントなどはそのまま出力されるので、
整形したい場合に使います。

引数のbindは、Kernel.bindingで得られるBindingオブジェクトです。
これで何処のコンテキストで実行するかというのを指定できます。
デフォルトはKernel::TOPLEVEL_BINDINGなので、指定ないとコンテキストはトップレベルになるようです。

では、HTMLにRubyスクリプトを埋め込んでみます。



foo.erb

1 <html>
2 <table>
3 % 3.times do |num|
4 <tr>
5 <td><%= num %></td>
6 </tr>
7 % end
8 </table>
9 </html>



foo.rb

1 #! /usr/local/bin/ruby
2
3 require "erb"
4 erb = ERB.new(File.read("foo.erb"), nil, "%")
5 erb.run



出力結果
<html>
<table>
<tr>
<td>0</td>
</tr>
<tr>
<td>1</td>
</tr>
<tr>
<td>2</td>
</tr>
</table>
</html>