From 6c0aece53d6fdfc890e35125dd3721ef2ff76d89 Mon Sep 17 00:00:00 2001 From: naruse Date: Mon, 12 Dec 2016 15:24:28 +0000 Subject: [PATCH] Use URI.decode_www_form_component [Bug #10774] `parser` refered RFC2396_Parser, but it is separated. test is contributed by Dominik Menke git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57066 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/uri/mailto.rb | 10 +++++----- test/uri/test_mailto.rb | 6 ++++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/uri/mailto.rb b/lib/uri/mailto.rb index b9e98e66bb..1494c3952b 100644 --- a/lib/uri/mailto.rb +++ b/lib/uri/mailto.rb @@ -267,18 +267,18 @@ module URI # # => "To: ruby-list@ruby-lang.org\nSubject: subscribe\nCc: myaddr\n\n\n" # def to_mailtext - to = parser.unescape(@to) + to = URI.decode_www_form_component(@to) head = '' body = '' @headers.each do |x| case x[0] when 'body' - body = parser.unescape(x[1]) + body = URI.decode_www_form_component(x[1]) when 'to' - to << ', ' + parser.unescape(x[1]) + to << ', ' + URI.decode_www_form_component(x[1]) else - head << parser.unescape(x[0]).capitalize + ': ' + - parser.unescape(x[1]) + "\n" + head << URI.decode_www_form_component(x[0]).capitalize + ': ' + + URI.decode_www_form_component(x[1]) + "\n" end end diff --git a/test/uri/test_mailto.rb b/test/uri/test_mailto.rb index 39a0f9cdeb..e58e9711e6 100644 --- a/test/uri/test_mailto.rb +++ b/test/uri/test_mailto.rb @@ -187,6 +187,12 @@ class TestMailTo < Test::Unit::TestCase u.select(:scheme, :host, :not_exist, :port) end end + + def test_to_mailtext + u = URI.parse('mailto:ruby-list@ruby-lang.org?Subject=subscribe&cc=myaddr') + assert_equal "To: ruby-list@ruby-lang.org\nSubject: subscribe\nCc: myaddr\n\n\n", + u.to_mailtext + end end