Project

General

Profile

Actions

Backport #3506

closed

Kernel::URI with optional parser

Added by marcandre (Marc-Andre Lafortune) almost 14 years ago. Updated almost 12 years ago.

Status:
Closed

Description

=begin
Kernel::URI could accept an optional parameter to specify a parser.

It could then be used in a couple of places in the library itself.

Patch follows:

diff --git a/lib/uri/common.rb b/lib/uri/common.rb
index bda6718..f9f0a6a 100644
--- a/lib/uri/common.rb
+++ b/lib/uri/common.rb
@@ -185,14 +185,7 @@ module URI
end

  def join(*uris)
  •  case uris[0]
    
  •  when Generic
    
  •  when String
    
  •    uris[0] = self.parse(uris[0])
    
  •  else
    
  •    raise ArgumentError,
    
  •      "bad argument(expected URI object or URI string)"
    
  •  end
    
  •  uris[0] = URI(uris[0], self)
     uris.inject :merge
    
    end

@@ -845,12 +838,12 @@ module Kernel
#
# Returns +uri+ converted to a URI object.
#

  • def URI(uri)
  • def URI(uri, parser = URI::DEFAULT_PARSER)
    case uri
    when URI::Generic
    uri
    when String
  •  URI.parse(uri)
    
  •  parser.parse(uri)
    
    else
    raise ArgumentError,
    "bad argument (expected URI object or URI string)"
    diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb
    index 4fdfd14..4084b56 100644
    --- a/lib/uri/generic.rb
    +++ b/lib/uri/generic.rb
    @@ -783,14 +783,7 @@ module URI

    return base and rel.

    you can modify base', but can not rel'.

    def merge0(oth)
  •  case oth
    
  •  when Generic
    
  •  when String
    
  •    oth = parser.parse(oth)
    
  •  else
    
  •    raise ArgumentError,
    
  •      "bad argument(expected URI object or URI string)"
    
  •  end
    
  •  oth = URI(oth, parser)
    
     if self.relative? && oth.relative?
       raise BadURIError,
    

@@ -854,15 +847,7 @@ module URI
private :route_from_path

  def route_from0(oth)
  •  case oth
    
  •  when Generic
    
  •  when String
    
  •    oth = parser.parse(oth)
    
  •  else
    
  •    raise ArgumentError,
    
  •      "bad argument(expected URI object or URI string)"
    
  •  end
    
  •  oth = URI(oth, parser)
     if self.relative?
       raise BadURIError,
         "relative URI: #{self}"
    

@@ -966,16 +951,7 @@ module URI
# #=> #<URI::Generic:0x2020c2f6 URL:/main.rbx?page=1>
#
def route_to(oth)

  •  case oth
    
  •  when Generic
    
  •  when String
    
  •    oth = parser.parse(oth)
    
  •  else
    
  •    raise ArgumentError,
    
  •      "bad argument(expected URI object or URI string)"
    
  •  end
    
  •  oth.route_from(self)
    
  •  URI(oth, parser).route_from(self)
    

    end

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0