def self.parse(uri)
return uri if uri.kind_of?(self)
if uri.kind_of?(Addressable::URI)
scheme = uri.scheme
else
if uri[0,4] == 'jdbc'
scheme = uri[0,4]
uri = Addressable::URI::parse(uri[5, uri.length])
subscheme = uri.scheme
else
uri = Addressable::URI::parse(uri)
scheme = uri.scheme
subscheme = nil
end
end
self.new(
:scheme => scheme,
:subscheme => subscheme,
:user => uri.user,
:password => uri.password,
:host => uri.host,
:port => uri.port,
:path => uri.path,
:query => uri.query_values,
:fragment => uri.fragment,
:relative => !!uri.to_s.index('//')
)
end