From: Masatoshi SEKI Date: 1999-03-18T23:44:27+09:00 Subject: [ruby-list:13000] Tiny eRuby 咳といいます。 ruby-dev の方で一時期話題になっていた eRuby を実装してみました。 http://www2a.biglobe.ne.jp/~seki/ruby/erb.rb … 本体 http://www2a.biglobe.ne.jp/~seki/ruby/enumre.rb … ライブラリ http://www2a.biblobe.ne.jp/~seki/ruby/erb.html … メモ です。 HTMLの文書や定型文の作成などに便利そうです。 お目汚しにどうぞ。 以下に Web ページからのメモを載せます。 -- -- -- erb.rb ruby-devメーリングリストの [ruby-dev:5301], [ruby-dev:5354], [ruby-dev:5376] などで紹介された ePerl風のeRubyの実装の一つです。 eRubyとは おおざっぱにいうと ePerl風に、文書に <% ruby scriptの切れ端 %> といった タグを 仕込んでそれをスクリプトとして実行し、動的に変化する文書を作るも のです。 タグ以外の部分はそのまま印字されます。 ヒアドキュメントがプロ グラムの中に文書を持っているのに対し、 eRubyではドキュメントの中にプロ グラムが入っている感じです。 定型文書やCGIなどの便利そうです。 * ヒアドキュメント … スクリプトの中に文書が入ってる * eRuby … 文書の中にスクリプトが入ってる (ヒアスクリプト!?) ruby script の切れ端は個々に解釈されるのではなく、 文書全体で一つのスク リプトとして解釈されます。 ですから、次のようなものも書けてなかなかかっ こ良いです。
<% ENV.each { |k, v| %>
<%= k %>
<%= v %> <% } %>
_________________________________________________________________ ERbとは ERbクラスは eRuby の実装の一つです。 配列に対するパターンマッチングをす るモジュール enumre.rb の試験用に書かれました。 タグ ERb で使えるタグは次の三つです。 <% , <%= , <%# , の後と、 %>の前に空白 が入っているのに注意! '<% ' スクリプト ' %>' スクリプトとして解釈します。 '<%= ' 値 ' %>' print 値します。 '<%# ' ... ' %>' コメント。何もしません。 メソッド ERb はソースを String として与えて生成します。 そのまま実行し、標準出力 に印字することと、 実行結果を文字列として取り出すことが出来ます。 また ソースを Ruby scirpt に変換した結果を見ることもできます。 new(文字列) ERbを生成する。 run([binding]) 実行して、結果を標準出力に印字します。 実行する環境 binding を指 定しないとTOPLEVEL_BINDINGで実行されます。 result([binding]) 実行して、結果を文字列として取り出します。 実行する環境 binding を指定しないとTOPLEVEL_BINDINGで実行されます。 src 変換した Ruby script を返します。 _________________________________________________________________ erb.rb erb.rb は単体で実行すると、引数のファイルを eRuby 文書として解釈し、 実 行結果、あるいは変換したRuby scriptを(-xオプション) 印字します。 _________________________________________________________________ さいごに erb.rbはenumre.rbの試験用に書かれました。 このため冗長な部分が多く、起 動も遅いです。 専用に書き直せばもっと効率の良い気の効いたものが出来ると 思います。 だれか作って下さいな。 _________________________________________________________________ -- -- -- * Known bug: Ruby 1.2.3 では "\" を含むファイルを印字するときに 異常動作することがあります。