アプリ版:「スタンプのみでお礼する」機能のリリースについて

#!/usr/local/bin/ruby
require 'cgi'
require 'kconv'
headers={
"status"=>"OK",
"type"=>"text/html; charset=utf-8"
}
cgi=CGI.new
hoge=cgi['arg']
cgi.out(headers){Kconv.toutf8(hoge)}

上記はcgiはクエリパラメータargに与えた文字列がUTF-8で表示される
物の基本骨格として記しました。

実際に作りたい物は、もう少し複雑で、cgi.outのブロックに渡す部分
は、ケースにより複数あります。
そこで、毎回ブロックに渡す部分をKconv.toutf8でくくるのは、如何な
ものかと思い、CGIクラスそのものを改造して、
cgi.out(headers){hoge}
と記述しても、UTF-8で出力されるようにしたいのですが、やり方が解
りません。

CGIクラスのoutメソッドをオーバーライドするのかなぁ?
と思うのですが、オーバーライドってやった事が無いので、
手がかりがつかめません。

お手ほどきの、よろしくお願いいたします。

A 回答 (1件)

alias で別名を付けて、中で呼び出します。



class CGI
alias :out_orig :out
def out(hdrs)
out_orig(hdrs) { yield.toutf8 }
end
end
かな。

他のやり方としては、一皮かぶせるほうが理解しやすいか。
def my_out(cgi,hdrs)
cgi.out(hdrs) { yield.toutf8 }
end
my_out(cgi,header) { hoge }
    • good
    • 0
この回答へのお礼

notnotさん ご回答ありがとうございます。

ご回答して頂いたコードはカッコイイですね!!

#notnotさんには、以前にもご回答頂いた事があります。
#その節はお世話になりました。

お礼日時:2009/05/11 20:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!