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����������������������������... 下载