From: "青山 和光" Date: 1997-10-13T08:41:23+09:00 Subject: [ruby-list:4910] Re^6: cgi-lib.rb まつもとさん、おはようございます。 >>[ruby-list:4887] Re: Re^4: cgi-lib.rb >>From: matz@netlab.co.jp (Yukihiro Matsumoto) >> >>昨日は死んでましたが,今日はずいぶんましのようです. 40度というと相当ですね。お大事に。 >>ああ,なるほど.前者は「解釈を行わない」ので字面のままになるわけ >>です.後者はマニュアルの不備ですね.いや,マニュアルに合わせ >>た方がよいのかなあ. この2点。わたなべさんのご説明でわかりました。Perl の方もマニュアルに は書いていなかったそうですから、このままか、補足説明を入れる程度で良さ そうですね。 >>perlと違ってeachで渡されるのはもとの文字列の(一部の)コピーで >>すから,変更しても元の文字列は変わりません. 配列と同じ様に、実体を渡すようにすると何か不具合が発生するでしょうか? 合わせて頂いた方が、紛らわしくありませんし、便利で嬉しいです。 a = ["a0a0a0a0"] a.each{|x| x.gsub! /a/, '1' } print a ----- CGI 関係の機能をもう少し追加してみたいと思います。 query = CGI.new query.header query.html({"title" => "test"}) do query.h1 "test" query.para do print "ok?" end query.hr end こんな風に書けたら、Perl & CGI.pm よりも便利だと思いますが、いかがでし ょうか? もっと見易く(使い易く)なりそうな案がありましたら、どんどんご 意見おねがい致します。とりあえず、これに合わせて書いたクラスを最後に付 けます。 そして、1つ質問。def para を def p とすると NameError: private method `p' called for #(CGI) となります。確か print と同じ動作で p があったような気はしますが、これ とぶつからないようにするには、どうしたら良いでしょうか? class CGI def header print "Content-Type: text/html\n\n" end def html(opts = '') title = opts['title'] begin print "\n", title, "\n" yield ensure print "\n\n\n" end end def h1(text = '') if iterator? begin print "\n

" yield ensure print "

\n" end else print "\n

", text, "

\n" end end def para(text = '') if iterator? begin print "\n

" yield ensure print "

\n" end else print "\n

", text, "

\n" end end def hr print "\n\n" end end 青山 和光 Wakou Aoyama