[Groonga-commit] ranguba/groonga-client at 4100d34 [master] schema: support normalizer

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Mar 22 11:59:52 JST 2016


Kouhei Sutou	2016-03-22 11:59:52 +0900 (Tue, 22 Mar 2016)

  New Revision: 4100d34fdc91b4c45027d127bcf9447a6b9aed56
  https://github.com/ranguba/groonga-client/commit/4100d34fdc91b4c45027d127bcf9447a6b9aed56

  Message:
    schema: support normalizer

  Modified files:
    lib/groonga/client/response/schema.rb
    test/response/test-schema.rb

  Modified: lib/groonga/client/response/schema.rb (+24 -0)
===================================================================
--- lib/groonga/client/response/schema.rb    2016-03-22 11:44:49 +0900 (6fa82fe)
+++ lib/groonga/client/response/schema.rb    2016-03-22 11:59:52 +0900 (1b2890c)
@@ -45,6 +45,16 @@ module Groonga
           end
         end
 
+        # @return [Hash<String, Normalizer>] Key is normalizer name and
+        #   value is the definition of the normalizer.
+        #
+        # @since 0.2.3
+        def normalizers
+          @normalizers ||= HashValueConverter.convert(@body["normalizers"]) do |normalizer|
+            Normalizer[normalizer]
+          end
+        end
+
         # @return [Hash<String, Table>] Key is table name and value is the
         #   definition of the table.
         #
@@ -90,6 +100,10 @@ module Groonga
           include Hashie::Extensions::MethodAccess
         end
 
+        class Normalizer < Hash
+          include Hashie::Extensions::MethodAccess
+        end
+
         class KeyType < Hash
           include Hashie::Extensions::MethodAccess
         end
@@ -175,6 +189,8 @@ module Groonga
               super(key, coerce_key_type(value))
             when :tokenizer
               super(key, coerce_tokenzer(value))
+            when :normalizer
+              super(key, coerce_normalizer(value))
             when :columns
               super(key, coerce_columns(value))
             when :indexes
@@ -203,6 +219,14 @@ module Groonga
             end
           end
 
+          def coerce_normalizer(raw_normalizer)
+            if raw_normalizer.nil?
+              nil
+            else
+              @schema.normalizers[raw_normalizer["name"]]
+            end
+          end
+
           def coerce_columns(raw_columns)
             HashValueConverter.convert(raw_columns) do |raw_column|
               Column.new(@schema, raw_column)

  Modified: test/response/test-schema.rb (+20 -0)
===================================================================
--- test/response/test-schema.rb    2016-03-22 11:44:49 +0900 (0664932)
+++ test/response/test-schema.rb    2016-03-22 11:59:52 +0900 (9136f48)
@@ -62,6 +62,26 @@ class TestResponseSchema < Test::Unit::TestCase
                      response.tables["Users"].key_type.name)
       end
 
+      def test_normalizer
+        body = {
+          "normalizers" => {
+            "NormalizerAuto" => {
+              "name" => "NormalizerAuto",
+            },
+          },
+          "tables" => {
+            "Users" => {
+              "normalizer" => {
+                "name" => "NormalizerAuto",
+              },
+            }
+          }
+        }
+        response = create_response(body)
+        assert_equal(response.normalizers["NormalizerAuto"],
+                     response.tables["Users"].normalizer)
+      end
+
       def test_columns
         body = {
           "tables" => {
-------------- next part --------------
HTML����������������������������...
下载 



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