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

ruby-changes:16701

From: marcandre <ko1@a...>
Date: Wed, 21 Jul 2010 12:40:40 +0900 (JST)
Subject: [ruby-changes:16701] Ruby:r28697 (trunk): * lib/uri/common.rb: Have URI() and URI.join accept URI objects in addition

marcandre	2010-07-21 12:32:41 +0900 (Wed, 21 Jul 2010)

  New Revision: 28697

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

  Log:
    * lib/uri/common.rb: Have URI() and URI.join accept URI objects in addition
      to strings. [ruby-core:30960]

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

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 28696)
+++ ChangeLog	(revision 28697)
@@ -1,3 +1,8 @@
+Wed Jul 21 12:31:30 2010  Marc-Andre Lafortune  <ruby-core@m...>
+
+	* lib/uri/common.rb: Have URI() and URI.join accept URI objects in
+	  addition to strings. [ruby-core:30960]
+
 Wed Jul 21 11:55:06 2010  Nobuyoshi Nakada  <nobu@r...>
 
 	* util.c (ruby_hdtoa): renamed from BSD__hdtoa.
Index: lib/uri/common.rb
===================================================================
--- lib/uri/common.rb	(revision 28696)
+++ lib/uri/common.rb	(revision 28697)
@@ -184,12 +184,15 @@
       end
     end
 
-    def join(*str)
-      u = self.parse(str[0])
-      str[1 .. -1].each do |x|
-	u = u.merge(x)
+    def join(*uris)
+      if uris[0].is_a?(URI::Generic)
+      elsif uri = String.try_convert(uris[0])
+        uris[0] = self.parse(uri)
+      else
+        raise ArgumentError,
+          "bad argument(expected URI object or URI string)"
       end
-      u
+      uris.inject :merge
     end
 
     def extract(str, schemes = nil, &block)
@@ -837,11 +840,19 @@
 end
 
 module Kernel
-  # alias for URI.parse.
+
   #
-  # This method is introduced at 1.8.2.
-  def URI(uri_str) # :doc:
-    URI.parse(uri_str)
+  # Returns +uri+ converted to a URI object.
+  #
+  def URI(uri)
+    if uri.is_a?(URI::Generic)
+      uri
+    elsif uri = String.try_convert(uri)
+      URI.parse(uri)
+    else
+      raise ArgumentError,
+        "bad argument (expected URI object or URI string)"
+    end
   end
   module_function :URI
 end

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

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