[前][次][番号順一覧][スレッド一覧]

ruby-changes:17994

From: naruse <ko1@a...>
Date: Thu, 2 Dec 2010 13:39:33 +0900 (JST)
Subject: [ruby-changes:17994] Ruby:r30015 (trunk): * lib/uri/common.rb (URI.encode_www_form):

naruse	2010-12-02 13:33:56 +0900 (Thu, 02 Dec 2010)

  New Revision: 30015

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30015

  Log:
    * lib/uri/common.rb (URI.encode_www_form):
      split key-value when the value is Array like object.

  Modified files:
    trunk/ChangeLog
    trunk/lib/uri/common.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 30014)
+++ ChangeLog	(revision 30015)
@@ -1,3 +1,8 @@
+Thu Dec  2 13:10:42 2010  NARUSE, Yui  <naruse@r...>
+
+	* lib/uri/common.rb (URI.encode_www_form):
+	  split key-value when the value is Array like object.
+
 Thu Dec  2 10:39:39 2010  NARUSE, Yui  <naruse@r...>
 
 	* lib/net/http.rb (Net::HTTP#set_form_data):
Index: lib/uri/common.rb
===================================================================
--- lib/uri/common.rb	(revision 30014)
+++ lib/uri/common.rb	(revision 30015)
@@ -798,15 +798,33 @@
   # This is an implementation of
   # http://www.w3.org/TR/html5/forms.html#url-encoded-form-data
   #
+  #    URI.encode_www_form([["q", "ruby"], ["lang", "en"]])
+  #    #=> "q=ruby&lang=en"
+  #    URI.encode_www_form("q" => "ruby", "lang" => "en")
+  #    #=> "q=ruby&lang=en"
+  #    URI.encode_www_form("q" => ["ruby", "perl"], "lang" => "en")
+  #    #=> "q=ruby&q=perl&lang=en"
+  #    URI.encode_www_form([["q", "ruby"], ["q", "perl"], ["lang", "en"]])
+  #    #=> "q=ruby&q=perl&lang=en"
+  #
   # See URI.encode_www_form_component, URI.decode_www_form
   def self.encode_www_form(enum)
     enum.map do |k,v|
-      str = encode_www_form_component(k)
-      if v
+      if v.nil?
+        encode_www_form_component(k)
+      elsif v.respond_to?(:to_ary)
+        v.to_ary.map do |w|
+          str = encode_www_form_component(k)
+          unless w.nil?
+            str << '='
+            str << encode_www_form_component(w)
+          end
+        end.join('&')
+      else
+        str = encode_www_form_component(k)
         str << '='
         str << encode_www_form_component(v)
       end
-      str
     end.join('&')
   end
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]