2011年3月22日

[ruby-list:47947] Re: Erubis新機能予告 (Re: eRuby における % 行)

桑田です。リプライが遅れてすみません。

2011/2/25 Kazuhiro NISHIYAMA <zn@xxxxx>:
> 西山和広です。
>
> At Wed, 23 Feb 2011 22:05:24 +0900,
> Makoto Kuwata wrote:
>

>> ほかに「こんな機能が欲しい」というのがもしあれば、今のうちに
>> おしらせください。
>
> 「%%>」に対応してほしいです。
>
> どういうものなのかは
> http://jp.rubyist.net/magazine/?0017-BundledLibraries
> に書いています。

ERBと違い、Erubisのパーサは正規表現を使ったシンプルな仕組みなので、
「<%%」はサポートできますが「%%>」をサポートできません。
これは技術上の制約からくる仕様です。

> http://znz.s1.xrea.com/t/?date=20110127#p01 に書いたように
> eRuby と非互換なものとは知らずに使って驚いてしまったので、
> 出来れば対応しておいて欲しいです。

そちらの日記を読むと、「%%>」があたかもeRubyの仕様のように書かれてますが、
「<%%」や「%%>」はERB独自の拡張仕様であり、eRubyの仕様ではないです。
Erubisでは技術的に容易な範囲でのみ、ERB独自仕様に追従しています。
これはtrimモードについても同様です。
#そもそもERBの「<%% %%>」はあまりいい仕様とは思えないので真似したくない。

ERBのこの独自仕様は、もともとeRubyを生成するようなeRubyを使うためだと思いますが、
そのような場合、Erubisでは「%%>」のかわりに「%<% %>>」を使うか、
別の埋め込み書式を指定することを強く推奨します。

require 'erubis'
input = <<'END'
[% for item in ['name', 'mail', 'desc'] %]
<p><%= @[%= item %] %></p>
[% end %]
END
pattern = '\\[% %\\]' # or '<%% %%>', etc...
puts Erubis::Eruby.new(input, :pattern=>pattern).result
### 実行結果
#<p><%= @name %></p>
#<p><%= @mail %></p>
#<p><%= @desc %></p>

--
regards,
makoto kuwata


投稿者 xml-rpc : 2011年3月22日 20:48
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/102729
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。