まつもと ゆきひろです

In message "[ruby-dev:4660] Re: cookie on cgi-lib.rb"
    on 99/02/04, Wakou Aoyama <wakou / fsinet.or.jp> writes:

|青山です。

|ところで、この CGI.tag というのは面白いアイディアですね。次のような感
|じにすると汎用性のあるインターフェイスになりますが、いかがでしょう。

面白いアイディアですね.パッチ取り込んでみました.
将来に渡って残るかどうかはともかく.

ところで,CGI.pmにしても,青山さんの例にしても,文字列を生成
して,それをprintするという手順になっていますが,これはなに
か理由があるのでしょうか? いっそのことCGI.tagで出力までして
しまえば,無駄な文字列オブジェクトの割り当ても減りそうな気が
するんですが,生成した文字列を再操作したいニーズってあるんで
しょうか.

つまり,

|input1 = CGI.tag("INPUT", {"TYPE"=>"BUTTON", "VALUE"=>"BUTTON"})
|input2 = CGI.tag("INPUT", {"TYPE"=>"TEXT", "VALUE"=>"TEXT"})
|form1  = CGI.tag("FORM"){ input1 + input2 }
|msg1   = CGI.tag("P"){ "message" + CGI.tag("BR") }
|
|print CGI.header,
|      CGI.tag("HTML"){
|        CGI.tag("HEAD"){ CGI.tag("TITLE"){"TITLE"} } +
|        CGI.tag("BODY"){ msg1 + form1 }
|      }

を以下のようにするって話ですが.

 CGI.header
 CGI.tag("HTML") {
   CGI.tag("HEAD") {
     CGI.tag("HEAD"){ CGI.tag("TITLE"){print "TITLE"} }
     CGI.tag("BODY"){ 
       CGI.tag("P"){ print "message"; CGI.tag("BR") }
       CGI.tag("FORM"){ 
         CGI.tag("INPUT", {"TYPE"=>"BUTTON", "VALUE"=>"BUTTON"})
         CGI.tag("INPUT", {"TYPE"=>"TEXT", "VALUE"=>"TEXT"})
       }
     }
   }
 }

どっちもどっちって気もしますが.