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
This commit is contained in:
naruse 2016-12-12 15:24:28 +00:00
Родитель 31f17f880e
Коммит 6c0aece53d
2 изменённых файлов: 11 добавлений и 5 удалений

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

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

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

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