From a2da80f24c680cea0c50cf56655b1a1fce6c013d Mon Sep 17 00:00:00 2001 From: Yasuo Honda Date: Tue, 22 Oct 2024 10:52:51 +0900 Subject: [PATCH] Address `warning: URI::RFC3986_PARSER` warnings This commit addresses the following warnings below. ``` /path/to/mail/lib/mail/spec/mail/attachments_list_spec.rb:179: warning: URI::RFC3986_PARSER.escape is obsoleted. Use URI::RFC2396_PARSER.escape explicitly. /path/to/mail/lib/mail/spec/mail/utilities_spec.rb:386: warning: URI::RFC3986_PARSER.escape is obsoleted. Use URI::RFC2396_PARSER.escape explicitly. /path/to/mail/lib/mail/spec/mail/utilities_spec.rb:390: warning: URI::RFC3986_PARSER.unescape is obsoleted. Use URI::RFC2396_PARSER.unescape explicitly. /path/to/mail/lib/mail/utilities.rb:160: warning: URI::RFC3986_PARSER.escape is obsoleted. Use URI::RFC2396_PARSER.escape explicitly. /path/to/mail/lib/mail/utilities.rb:164: warning: URI::RFC3986_PARSER.unescape is obsoleted. Use URI::RFC2396_PARSER.unescape explicitly. /path/to/mail/lib/mail/utilities.rb:452: warning: URI::RFC3986_PARSER.unescape is obsoleted. Use URI::RFC2396_PARSER.unescape explicitly. /path/to/mail/lib/mail/utilities.rb:463: warning: URI::RFC3986_PARSER.escape is obsoleted. Use URI::RFC2396_PARSER.escape explicitly. ``` Ruby 3.4 changes URI::DEFAULT_PARSER to URI::RFC3986_Parser and deprecates some methods. URI::RFC3986_PARSER.make_regexp and URI::RFC3986_PARSER.make_regexp are used in the mail gem. This commit uses URI::RFC2396_PARSER only if it is available for these versions: - uri v0.12.2 for Ruby 3.2/3.1 - uri v0.13.1 for Ruby 3.3 - Ruby 3.4.0dev https://bugs.ruby-lang.org/issues/19266 --- lib/mail/utilities.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/mail/utilities.rb b/lib/mail/utilities.rb index c0e25f1ab..fd57e8a90 100644 --- a/lib/mail/utilities.rb +++ b/lib/mail/utilities.rb @@ -165,7 +165,11 @@ def uri_unescape( str ) end def uri_parser - @uri_parser ||= URI.const_defined?(:DEFAULT_PARSER) ? URI::DEFAULT_PARSER : URI + @uri_parser ||= if URI.const_defined?(:DEFAULT_PARSER) + defined?(URI::RFC2396_PARSER) ? URI::RFC2396_PARSER : URI::DEFAULT_PARSER + else + URI + end end # Matches two objects with their to_s values case insensitively @@ -464,7 +468,7 @@ def Utilities.param_encode(str) end def Utilities.uri_parser - URI::DEFAULT_PARSER + defined?(URI::RFC2396_PARSER) ? URI::RFC2396_PARSER : URI::DEFAULT_PARSER end # Pick a Ruby encoding corresponding to the message charset. Most