class Bundler::URI::RFC3986_Parser
def split(uri) #:nodoc:
def split(uri) #:nodoc: begin uri = uri.to_str rescue NoMethodError raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri.inspect}" end uri.ascii_only? or raise InvalidURIError, "Bundler::URI must be ascii only #{uri.dump}" if m = RFC3986_URI.match(uri) query = m["query"] scheme = m["scheme"] opaque = m["path-rootless"] if opaque opaque << "?#{query}" if query [ scheme, nil, # userinfo nil, # host nil, # port nil, # registry nil, # path opaque, nil, # query m["fragment"] ] else # normal [ scheme, m["userinfo"], m["host"], m["port"], nil, # registry (m["path-abempty"] || m["path-absolute"] || m["path-empty"]), nil, # opaque query, m["fragment"] ] end elsif m = RFC3986_relative_ref.match(uri) [ nil, # scheme m["userinfo"], m["host"], m["port"], nil, # registry, (m["path-abempty"] || m["path-absolute"] || m["path-noscheme"] || m["path-empty"]), nil, # opaque m["query"], m["fragment"] ] else raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri.inspect}" end end