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/