[Groonga-commit] ranguba/chupa-text-decomposer-mail at d654286 [master] Support nested message/rfc822 case

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index