Kouhei Sutou
null+****@clear*****
Wed Mar 1 23:35:43 JST 2017
Kouhei Sutou 2017-03-01 23:35:43 +0900 (Wed, 01 Mar 2017) New Revision: d654286f5bc99a6170d27b91cfda683f1f8f5b02 https://github.com/ranguba/chupa-text-decomposer-mail/commit/d654286f5bc99a6170d27b91cfda683f1f8f5b02 Message: Support nested message/rfc822 case Added files: test/fixture/nested-rfc822.eml Modified files: lib/chupa-text/decomposers/mail.rb test/test-mail.rb Modified: lib/chupa-text/decomposers/mail.rb (+7 -1) =================================================================== --- lib/chupa-text/decomposers/mail.rb 2017-03-01 23:09:42 +0900 (c47896d) +++ lib/chupa-text/decomposers/mail.rb 2017-03-01 23:35:43 +0900 (ef547ba) @@ -46,7 +46,13 @@ module ChupaText body.force_encoding(part.charset) if part.charset part_data = TextData.new(body, :source_data => data) - part_data.uri = "#{data.uri}\##{i}" + uri = data.uri.dup + if uri.fragment + uri.fragment += "-#{i}" + else + uri.fragment = i.to_s + end + part_data.uri = uri part_data.mime_type = part.mime_type if part.mime_type part_data[:encoding] = body.encoding.to_s yield(part_data) Added: test/fixture/nested-rfc822.eml (+34 -0) 100644 =================================================================== --- /dev/null +++ test/fixture/nested-rfc822.eml 2017-03-01 23:35:43 +0900 (f9618a4) @@ -0,0 +1,34 @@ +Mime-Version: 1.0 +Subject: Hello +From: Sender <from �� example.com> +To: Recipient <to �� example.com> +Date: Sun, 19 Feb 2017 00:27:55 +0900 (JST) +Content-Type: multipart/alternative; + boundary="++++"; + charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--++++ +Content-Type: message/rfc822; + charset=UTF-8 +Content-Transfer-Encoding: 8bit +Mime-Version: 1.0 + +Content-Type: multipart/alternative; + boundary="===="; + charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--==== +Content-Type: message/rfc822; + charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Mime-Version: 1.0 +Content-Type: text/plain +Subject: Sub Hello + +Sub World +--==== + +--++++ Modified: test/test-mail.rb (+28 -1) =================================================================== --- test/test-mail.rb 2017-03-01 23:09:42 +0900 (6bbdbf4) +++ test/test-mail.rb 2017-03-01 23:35:43 +0900 (8cab4ee) @@ -84,12 +84,22 @@ class TestMail < Test::Unit::TestCase data.mime_type = "message/rfc822" decomposed = [] - decomposer.decompose(data) do |decomposed_data| + decompose_data(data) do |decomposed_data| decomposed << decomposed_data end decomposed end + def decompose_data(data, &block) + decomposer.decompose(data) do |decomposed_data| + if decomposer.target?(decomposed_data) + decompose_data(decomposed_data, &block) + else + yield(decomposed_data) + end + end + end + sub_test_case("attributes") do def test_subject assert_equal(["Hello"], decompose("subject")) @@ -163,5 +173,22 @@ class TestMail < Test::Unit::TestCase super(fixture_path("no-mime.eml")) end end + + sub_test_case("nested message/rfc822") do + def test_body + assert_equal([ + [ + fixture_path("nested-rfc822.eml") + "#0-0-0", + "Sub World", + ], + ], + decompose.collect {|data| [data.uri.to_s, data.body]}) + end + + private + def decompose + super(fixture_path("nested-rfc822.eml")) + end + end end end -------------- next part -------------- HTML����������������������������... Download