summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <[email protected]>2024-07-18 13:31:17 +0900
committergit <[email protected]>2024-07-19 00:50:38 +0000
commit8db2325a11518f50f92fe05ccae112c0d71ce12f (patch)
treee757692fd01738df089b525e9a73391bf45b8a01
parent082335494b59557c322617ff4329c5102cf404da (diff)
[ruby/uri] Also support URI::PATTERN with switch-back
https://github.com/ruby/uri/commit/823697edb4
-rw-r--r--lib/uri/common.rb2
-rw-r--r--test/uri/test_common.rb6
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/uri/common.rb b/lib/uri/common.rb
index a4ed70f9a3..98cb18ec0d 100644
--- a/lib/uri/common.rb
+++ b/lib/uri/common.rb
@@ -27,8 +27,10 @@ module URI
const_set("Parser", parser.class)
remove_const(:REGEXP) if defined?(REGEXP)
+ remove_const(:PATTERN) if defined?(PATTERN)
if Parser == RFC2396_Parser
const_set("REGEXP", URI::RFC2396_REGEXP)
+ const_set("PATTERN", URI::RFC2396_REGEXP::PATTERN)
Parser.new.pattern.each_pair do |sym, str|
unless REGEXP::PATTERN.const_defined?(sym)
REGEXP::PATTERN.const_set(sym, str)
diff --git a/test/uri/test_common.rb b/test/uri/test_common.rb
index 8d0a206c86..aa9c6898ed 100644
--- a/test/uri/test_common.rb
+++ b/test/uri/test_common.rb
@@ -12,17 +12,21 @@ class URI::TestCommon < Test::Unit::TestCase
def test_parser_switch
assert_equal(URI::Parser, URI::RFC3986_Parser)
- refute defined?(::URI::REGEXP)
+ refute defined?(URI::REGEXP)
+ refute defined?(URI::PATTERN)
URI.parser = URI::RFC2396_PARSER
assert_equal(URI::Parser, URI::RFC2396_Parser)
assert defined?(URI::REGEXP)
+ assert defined?(URI::PATTERN)
+ assert defined?(URI::PATTERN::ESCAPED)
URI.parser = URI::RFC3986_PARSER
assert_equal(URI::Parser, URI::RFC3986_Parser)
refute defined?(URI::REGEXP)
+ refute defined?(URI::PATTERN)
ensure
URI.parser = URI::RFC3986_PARSER
end