at posts/single.html

Erubis を使ってみる

ERB の高速な(?)テンプレートである Erubis を使ってみた。

インストール

sudo gem install erubis

サンプル

erubis の doc/user-guide.html を参考にする。

#!/usr/bin/env ruby
require 'rubygems'
require 'erubis'
include Erubis::XmlHelper

str = <<EOS
<div>
  <%= '<b>test</b>' %>
  <%=h '<b>test</b>' %>
</div>
EOS

puts Erubis::Eruby::new(str).result(binding)

実行するとこうなる。

<div>
  <b>test</b>
  &lt;b&gt;test&lt;/b&gt;
</div>

分かったこと

  • ERB の代わりに Erubis::Eruby を使う
    • よりシンプルな実装の Erubis::TinyEruby もある
  • ERB::Util の代わりに Erubis::XmlHelper を使う

tDiary に埋め込んでみる

ERB との 互換性を確かめるために tdiary.rb のライブラリ読み込み部分を以下のように書き換えてみる。

begin
        require 'rubygems'
        require 'erubis'
        ERB = Erubis::Eruby
        ERB::Util = Erubis::XmlHelper
rescue LoadError
        begin
                require 'erb_fast'
        rescue LoadError
                require 'erb'
        end
end

そして実行…みごとにコンパイルエラー。

$ ruby index.rb
<pre>compile error
./tdiary.rb:1129: syntax error, unexpected '&lt;'
&lt;head&gt;
 ^
./tdiary.rb:1131: syntax error, unexpected '&lt;', expecting $end
&lt;/head&gt;
 ^</pre>

うーん。変なところでHTMLエスケープされてるみたい。

関連する日記