[ruby/uri] Also support URI::PATTERN with switch-back

https://github.com/ruby/uri/commit/823697edb4
This commit is contained in:
Hiroshi SHIBATA 2024-07-18 13:31:17 +09:00 коммит произвёл git
Родитель 082335494b
Коммит 8db2325a11
2 изменённых файлов: 7 добавлений и 1 удалений

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

@ -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)

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

@ -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