diff options
author | Nobuyoshi Nakada <[email protected]> | 2023-06-25 23:58:12 +0900 |
---|---|---|
committer | git <[email protected]> | 2023-06-25 15:24:05 +0000 |
commit | c21436cb353f8194db647bde2a5ef434eb3dcb2a (patch) | |
tree | 69bdd4a63448f2d4ac08136dd3eb098a773ddb49 /lib/uri | |
parent | 15ec072a4266cba7b3548548ef48d85d296ae9e2 (diff) |
[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
Diffstat (limited to 'lib/uri')
-rw-r--r-- | lib/uri/rfc3986_parser.rb | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/uri/rfc3986_parser.rb b/lib/uri/rfc3986_parser.rb index 59e2be2805..ffdcfa9227 100644 --- a/lib/uri/rfc3986_parser.rb +++ b/lib/uri/rfc3986_parser.rb @@ -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>*+)?) |