[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:
Nobuyoshi Nakada 2023-06-25 23:58:12 +09:00 коммит произвёл git
Родитель 15ec072a42
Коммит c21436cb35
2 изменённых файлов: 14 добавлений и 7 удалений

Просмотреть файл

@ -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 = {}