[Groonga-commit] ranguba/chupa-text at 1ebaf2d [master] Add decomposer

Zurück zum Archiv-Index

Kouhei Sutou null+****@clear*****
Tue Dec 31 22:46:21 JST 2013


Kouhei Sutou	2013-12-31 22:46:21 +0900 (Tue, 31 Dec 2013)

  New Revision: 1ebaf2de735467fc3f47cc8bb229887da3e45310
  https://github.com/ranguba/chupa-text/commit/1ebaf2de735467fc3f47cc8bb229887da3e45310

  Message:
    Add decomposer

  Copied files:
    lib/chupa-text/decomposer.rb
      (from lib/chupa-text.rb)
  Modified files:
    lib/chupa-text.rb
    lib/chupa-text/data.rb
    lib/chupa-text/feeder.rb
    test/test-feeder.rb

  Modified: lib/chupa-text.rb (+1 -0)
===================================================================
--- lib/chupa-text.rb    2013-12-31 22:20:25 +0900 (4d43e44)
+++ lib/chupa-text.rb    2013-12-31 22:46:21 +0900 (d90b8c9)
@@ -17,3 +17,4 @@
 require "chupa-text/version"
 
 require "chupa-text/feeder"
+require "chupa-text/decomposer"

  Modified: lib/chupa-text/data.rb (+6 -0)
===================================================================
--- lib/chupa-text/data.rb    2013-12-31 22:20:25 +0900 (5fcc544)
+++ lib/chupa-text/data.rb    2013-12-31 22:46:21 +0900 (aca6518)
@@ -65,6 +65,12 @@ module ChupaText
       self["content-type"] = type
     end
 
+    # @return [Bool] true if content-type is "text/plain", false
+    #   otherwise.
+    def text?
+      content_type == "text/plain"
+    end
+
     private
     def read_body
       return nil if****@path*****?

  Copied: lib/chupa-text/decomposer.rb (+9 -2) 86%
===================================================================
--- lib/chupa-text.rb    2013-12-31 22:20:25 +0900 (4d43e44)
+++ lib/chupa-text/decomposer.rb    2013-12-31 22:46:21 +0900 (ba73c6d)
@@ -14,6 +14,13 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
-require "chupa-text/version"
+module ChupaText
+  class Decomposer
+    def target?(data)
+      false
+    end
 
-require "chupa-text/feeder"
+    def decompose(data)
+    end
+  end
+end

  Modified: lib/chupa-text/feeder.rb (+24 -4)
===================================================================
--- lib/chupa-text/feeder.rb    2013-12-31 22:20:25 +0900 (f0b6ebf)
+++ lib/chupa-text/feeder.rb    2013-12-31 22:46:21 +0900 (c4a5d50)
@@ -18,11 +18,31 @@ require "chupa-text/data"
 
 module ChupaText
   class Feeder
+    def initialize
+      @decomposers = []
+    end
+
+    def add_decomposer(decomposer)
+      @decomposers << decomposer
+    end
+
     def feed(data)
-      extracted = Data.new
-      extracted.content_type = "text/plain"
-      extracted.body = data.body
-      yield(extracted)
+      loop do
+        if data.text?
+          yield(data)
+          return
+        end
+        decomposer = find_decomposer(data)
+        return if decomposer.nil?
+        data = decomposer.decompose(data)
+      end
+    end
+
+    private
+    def find_decomposer(data)
+      @decomposers.find do |decomposer|
+        decomposer.target?(data)
+      end
     end
   end
 end

  Modified: test/test-feeder.rb (+8 -1)
===================================================================
--- test/test-feeder.rb    2013-12-31 22:20:25 +0900 (ccf01ff)
+++ test/test-feeder.rb    2013-12-31 22:46:21 +0900 (fca81a5)
@@ -29,13 +29,20 @@ class TestFeeder < Test::Unit::TestCase
       texts
     end
 
-    sub_test_case("text") do
+    sub_test_case("no decomposers") do
       def test_text
         data = ChupaText::Data.new
         data.content_type = "text/plain"
         data.body = "Hello"
         assert_equal(["Hello"], feed(data))
       end
+
+      def test_not_text
+        data = ChupaText::Data.new
+        data.content_type = "text/html"
+        data.body = "<html><body>Hello</body></html>"
+        assert_equal([], feed(data))
+      end
     end
   end
 end
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Zurück zum Archiv-Index