зеркало из https://github.com/github/ruby.git
[ruby/uri] Fix host part in relative referece #83
In relative referece, host part can be ommitted but can not be empty. https://github.com/ruby/uri/commit/2980f0ba02
This commit is contained in:
Родитель
15ec072a42
Коммит
c21436cb35
|
@ -26,11 +26,6 @@ module URI
|
|||
]x
|
||||
|
||||
USERINFO = /(?:%\h\h|[!$&-.0-9:;=A-Z_a-z~])*+/
|
||||
AUTHORITY = %r[
|
||||
(?:(?<userinfo>#{USERINFO.source})@)?
|
||||
(?<host>#{HOST.source.delete(" \n")})
|
||||
(?::(?<port>\d*+))?
|
||||
]x
|
||||
|
||||
SCHEME = %r[[A-Za-z][+\-.0-9A-Za-z]*+].source
|
||||
SEG = %r[(?:%\h\h|[!$&-.0-9:;=@A-Z_a-z~/])].source
|
||||
|
@ -42,7 +37,11 @@ module URI
|
|||
(?<URI>
|
||||
(?<scheme>#{SCHEME}):
|
||||
(?<hier-part>//
|
||||
(?<authority>#{AUTHORITY})
|
||||
(?<authority>
|
||||
(?:(?<userinfo>#{USERINFO.source})@)?
|
||||
(?<host>#{HOST.source.delete(" \n")})
|
||||
(?::(?<port>\d*+))?
|
||||
)
|
||||
(?<path-abempty>(?:/\g<seg>*+)?)
|
||||
| (?<path-absolute>/((?!/)\g<seg>++)?)
|
||||
| (?<path-rootless>(?!/)\g<seg>++)
|
||||
|
@ -56,7 +55,11 @@ module URI
|
|||
(?<seg>#{SEG}){0}
|
||||
(?<relative-ref>
|
||||
(?<relative-part>//
|
||||
(?<authority>#{AUTHORITY})
|
||||
(?<authority>
|
||||
(?:(?<userinfo>#{USERINFO.source})@)?
|
||||
(?<host>#{HOST.source.delete(" \n")}(?<!/))?
|
||||
(?::(?<port>\d*+))?
|
||||
)
|
||||
(?<path-abempty>(?:/\g<seg>*+)?)
|
||||
| (?<path-absolute>/\g<seg>*+)
|
||||
| (?<path-noscheme>#{SEG_NC}++(?:/\g<seg>*+)?)
|
||||
|
|
|
@ -977,6 +977,10 @@ class URI::TestGeneric < Test::Unit::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_split
|
||||
assert_equal [nil, nil, nil, nil, nil, "", nil, nil, nil], URI.split("//")
|
||||
end
|
||||
|
||||
class CaseInsensitiveEnv
|
||||
def initialize(h={})
|
||||
@h = {}
|
||||
|
|
Загрузка…
Ссылка в новой задаче