ruby-changes:18068
From: naruse <ko1@a...>
Date: Mon, 6 Dec 2010 09:35:29 +0900 (JST)
Subject: [ruby-changes:18068] Ruby:r30089 (trunk): * lib/uri/common.rb (URI::Parser#initialize_pattern):
naruse 2010-12-06 09:19:28 +0900 (Mon, 06 Dec 2010) New Revision: 30089 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30089 Log: * lib/uri/common.rb (URI::Parser#initialize_pattern): workaround fix pattern of hostname for RFC 3986. [ruby-dev:42672] Modified files: trunk/ChangeLog trunk/lib/uri/common.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 30088) +++ ChangeLog (revision 30089) @@ -1,3 +1,8 @@ +Mon Dec 6 09:16:46 2010 NARUSE, Yui <naruse@r...> + + * lib/uri/common.rb (URI::Parser#initialize_pattern): + workaround fix pattern of hostname for RFC 3986. [ruby-dev:42672] + Mon Dec 6 09:14:38 2010 NARUSE, Yui <naruse@r...> * lib/mkmf.rb (check_signedness): rename unused variable prelude. Index: lib/uri/common.rb =================================================================== --- lib/uri/common.rb (revision 30088) +++ lib/uri/common.rb (revision 30089) @@ -31,7 +31,7 @@ # mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | # "(" | ")" # unreserved = alphanum | mark - UNRESERVED = "-_.!~*'()#{ALNUM}" + UNRESERVED = "\\-_.!~*'()#{ALNUM}" # reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | # "$" | "," # reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | @@ -239,8 +239,8 @@ ret[:ESCAPED] = escaped = (opts.delete(:ESCAPED) || PATTERN::ESCAPED) ret[:UNRESERVED] = unreserved = opts.delete(:UNRESERVED) || PATTERN::UNRESERVED ret[:RESERVED] = reserved = opts.delete(:RESERVED) || PATTERN::RESERVED - ret[:DOMLABEL] = domlabel = opts.delete(:DOMLABEL) || PATTERN::DOMLABEL - ret[:TOPLABEL] = toplabel = opts.delete(:TOPLABEL) || PATTERN::TOPLABEL + ret[:DOMLABEL] = opts.delete(:DOMLABEL) || PATTERN::DOMLABEL + ret[:TOPLABEL] = opts.delete(:TOPLABEL) || PATTERN::TOPLABEL ret[:HOSTNAME] = hostname = opts.delete(:HOSTNAME) # RFC 2396 (URI Generic Syntax) @@ -258,8 +258,9 @@ ret[:FRAGMENT] = fragment = "#{uric}*" # hostname = *( domainlabel "." ) toplabel [ "." ] + # reg-name = *( unreserved / pct-encoded / sub-delims ) # RFC3986 unless hostname - ret[:HOSTNAME] = hostname = "(?:#{domlabel}\\.)*#{toplabel}\\.?" + ret[:HOSTNAME] = hostname = "(?:[a-zA-Z0-9\\-._~!$&'()*+,;=]|%\\h\\h)*" end # RFC 2373, APPENDIX B: @@ -326,7 +327,7 @@ ret[:REL_SEGMENT] = rel_segment = "(?:[#{unreserved};@&=+$,]|#{escaped})+" # scheme = alpha *( alpha | digit | "+" | "-" | "." ) - ret[:SCHEME] = scheme = "[#{PATTERN::ALPHA}][-+.#{PATTERN::ALPHA}\\d]*" + ret[:SCHEME] = scheme = "[#{PATTERN::ALPHA}][\\-+.#{PATTERN::ALPHA}\\d]*" # abs_path = "/" path_segments ret[:ABS_PATH] = abs_path = "/#{path_segments}" -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/