From: Nobuyoshi Nakada Date: 2006-09-26T13:29:45+09:00 Subject: [ruby-dev:29606] Re: cgi.rbのformの挙動 なかだです。 At Tue, 26 Sep 2006 12:52:43 +0900, Yukihiro Matsumoto wrote in [ruby-dev:29605]: > |cgi.rb全体としてみると、「methodとenctypeだけ」じゃなくてHashで渡して > |いるものすべてですね。"method"と"Method"があったらどうするかとか考える > |とめんどうなことになりそうなので、エラーにしてしまうほうがいいような気 > |もします。 > > たぶんattributeになるHashすべてをどこかで正規化する必要があ > るんでしょうね。いつやるかなあ。 cgi.rbを捨てるとき? Index: lib/cgi.rb =================================================================== RCS file: /pub/cvs/ruby/lib/cgi.rb,v retrieving revision 1.68.2.18 diff -U 2 -p -u -r1.68.2.18 cgi.rb --- lib/cgi.rb 23 Sep 2006 12:47:11 -0000 1.68.2.18 +++ lib/cgi.rb 26 Sep 2006 04:27:21 -0000 @@ -1543,10 +1543,6 @@ class CGI "ENCTYPE" => enctype } else - unless method.has_key?("METHOD") - method["METHOD"] = "post" - end - unless method.has_key?("ENCTYPE") - method["ENCTYPE"] = enctype - end + method["METHOD"] ||= "post" + method["ENCTYPE"] ||= enctype method end @@ -1637,4 +1633,12 @@ class CGI attributes = { "PRETTY" => true } end + canonical = {} + attributes.each {|key, value| + if old = canonical[upper = key.upcase] + raise ArgumentError, + "duplcate keys in different cases: #{old} and #{key}" + end + canonical[upper] = key + end pretty = attributes.delete("PRETTY") pretty = " " if true == pretty -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦