松浦@コムデザインです

さとうさん、http://m.sa.to/misc/web-ssi.html
も参考にさせていただきました。そういえば、SSIも
テンプレートの「はしり」みたいなものですよね。
みなさんいろいろ工夫されているんですねぇ。

--

さて、eruby, ERb の「強い」^^; ご推薦がありましたので、
いろいろ自分なりに試してみて、それなりに求めているような
ことができるのが確認できたので報告です。

# はたしてこれが一般的な使い方なのか甚だ疑問 ^^;

On Tue, 20 Feb 2001 22:18:33 +0900,
TADA Tadashi <sho / spc.gr.jp> wrote:

>  だったら、Ruby版HTML::Templateを書くよりも、HTML::Template → 
> eRubyコンバータを書いたほうが;-)

模索中。。。

>  ERb(かERbLight?)を使えば、以下のようにほとんど同じイメージで欲しい
> 機能を実現できますし。ちょっとおまじないを入れないといけないけど、
> Bindingをいじればそれもいらないかも。いざとなったらコードも埋め込め
> るのだから、Templateより心強いと思うんですけど。

> >○置き換え

> >○くり返し

> >○条件分岐

この3つをトライしてみました。ERbのサンプル(erbux.rb)を
そのまま参考にさせていただいています。

erb-test.rb から テンプレートになる erb-test.rhtml 
を呼び出す、という形になってます。

=ERb を使ったHTML Template のテスト=
--erb-test.rb  ------------------------------------------------
#! /usr/local/bin/ruby

require 'erb/erbu'

class MyWriter
  include ERbUtil
  extend ERbMethod

  def initialize(user)
    @user = user
  end
  attr_reader(:user)

  def_erb_method('erb_page(tmpl)', 'erb-test4.rhtml')

end

mw = MyWriter.new("mas")

tmpl1 = Hash.new(0)
tmpl1 = { "zip" => "111", "tel" => "011-111-1111", "email" => "a / aaa.aa" }

tmpl2 = Hash.new(0)
tmpl2 = { "zip" => "222", "tel" => "02-2222-2222" }

tmpl = [tmpl1, tmpl2]

puts mw.erb_page(tmpl)
---------------------------------------------------------------


--erb-test.rhtml  ---------------------------------------------
<HTML>
<HEAD><TITLE>ERb Test</TITLE></HEAD>
<BODY>
<H1>ERb Test</H1>
<UL>
<LI>User: <%= user%>

  <!-- 繰り返し、置換-->
   <% for i in 0..tmpl.length-1  %>
     <LI>Tel<%= i%>: <%= tmpl[i]['tel']%>
     <LI>Zip<%= i%>: <%= tmpl[i]['zip']%>
   <% end %>

  <!-- 条件分岐-->
   <% for i in 0..tmpl.length-1  %>
     <% if tmpl[i]['email'] %>
     <LI>Email: <%= tmpl[i]['email']%>
     <% else %>
     <LI>Email: (No Email Address)
     <% end %>
   <% end %>
</UL>
</BODY>
</HTML>
---------------------------------------------------------------


--結果(コメント、改行など一部省略)  -------------------------------
<HTML>
<HEAD><TITLE>ERb Test</TITLE></HEAD>
<BODY>
<H1>ERb Test</H1>
<UL>
<LI>User: mas
   
     <LI>Tel0: 011-111-1111
     <LI>Zip0: 111
   
     <LI>Tel1: 02-2222-2222
     <LI>Zip1: 222

     <LI>Email: a / aaa.aa

     <LI>Email: (No Email Address)

</UL>
</BODY>
</HTML>
---------------------------------------------------------------


こんなで、なかなかいい感じです。これが試せたところで、
皆さんの「強い」ご推薦を再認識した次第。。。


> Bindingをいじればそれもいらないかも。いざとなったらコードも埋め込め
> るのだから、Templateより心強いと思うんですけど。


これはおっしゃる通りですよね。



--
[仮称]オープンソースの集い 2001 in 名大祭 今年もやります! 2001/06/09〜10
------------------------------------------------------------------------
  o,   matswra / adgj.net  /  matsuura, hirosato
o4/-'   |- TUNAGU-NET  =>  http://tunagu.gr.jp/  
 \      |- NBUG        =>  http://tunagu.gr.jp/nbug/
        `- COM-DESIGN  =>  http://comde.co.jp/