diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/uri/generic.rb | 41 |
2 files changed, 15 insertions, 31 deletions
@@ -1,3 +1,8 @@ +Mon Oct 31 11:08:51 2016 Samuel Williams <samuel.williams@oriontransfer.co.nz> + + * lib/uri/generic.rb (URI::Generic#merge): merge merge0. + [GH-1469] + Sun Oct 30 15:32:43 2016 SHIBATA Hiroshi <hsbt@ruby-lang.org> * lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb index 2b95b47fa7..5df9a163fe 100644 --- a/lib/uri/generic.rb +++ b/lib/uri/generic.rb @@ -1096,16 +1096,20 @@ module URI # # => #<URI::HTTP:0x2021f3b0 URL:http://my.example.com/main.rbx?page=1> # def merge(oth) - begin - base, rel = merge0(oth) - rescue - raise $!.class, $!.message + rel = parser.send(:convert_to_uri, oth) + + if rel.absolute? + #raise BadURIError, "both URI are absolute" if absolute? + # hmm... should return oth for usability? + return rel end - if base == rel - return base + unless self.absolute? + raise BadURIError, "both URI are relative" end + base = self.dup + authority = rel.userinfo || rel.host || rel.port # RFC2396, Section 5.2, 2) @@ -1136,31 +1140,6 @@ module URI end # merge alias + merge - # return base and rel. - # you can modify `base', but can not `rel'. - def merge0(oth) - oth = parser.send(:convert_to_uri, oth) - - if self.relative? && oth.relative? - raise BadURIError, - "both URI are relative" - end - - if self.absolute? && oth.absolute? - #raise BadURIError, - # "both URI are absolute" - # hmm... should return oth for usability? - return oth, oth - end - - if self.absolute? - return self.dup, oth - else - return oth, oth - end - end - private :merge0 - # :stopdoc: def route_from_path(src, dst) case dst |