aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-12-12 15:24:28 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-12-12 15:24:28 +0000
commit5ba913f25b45f8c1d701682377f96efe85fa564b (patch)
treef5794da3e28554449621d8cb222bb2656d3e96ef
parent0f584cd4c62da45caceb2de16a22fcdcb82c0edb (diff)
downloadruby-5ba913f25b45f8c1d701682377f96efe85fa564b.tar.gz
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
-rw-r--r--lib/uri/mailto.rb10
-rw-r--r--test/uri/test_mailto.rb6
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