[Groonga-commit] ranguba/rroonga at d9e6195 [master] expression-builder: support nested array

Back to archive index

Kouhei Sutou null+****@clear*****
Wed Mar 23 23:32:33 JST 2016


Kouhei Sutou	2016-03-23 23:32:33 +0900 (Wed, 23 Mar 2016)

  New Revision: d9e61957897e4f82c54984875b1cfbdd0ed9d664
  https://github.com/ranguba/rroonga/commit/d9e61957897e4f82c54984875b1cfbdd0ed9d664

  Message:
    expression-builder: support nested array

  Modified files:
    lib/groonga/expression-builder.rb
    test/test-expression-builder.rb

  Modified: lib/groonga/expression-builder.rb (+4 -13)
===================================================================
--- lib/groonga/expression-builder.rb    2016-03-07 08:49:00 +0900 (c8aac5c)
+++ lib/groonga/expression-builder.rb    2016-03-23 23:32:33 +0900 (c4732d1)
@@ -1,5 +1,3 @@
-# -*- coding: utf-8 -*-
-#
 # Copyright (C) 2015  Masafumi Yokoyama <yokoyama �� clear-code.com>
 # Copyright (C) 2009-2016  Kouhei Sutou <kou �� clear-code.com>
 #
@@ -77,23 +75,16 @@ module Groonga
       builders << match(@query, default_parse_options) if @query
       if block_given?
         custom_builder = yield(self)
-        if custom_builder.is_a?(::Array)
-          builders.concat(custom_builder)
-        else
-          builders << custom_builder
-        end
+        builders << custom_builder
+        builders.flatten!
       end
 
       if builders.empty?
         expression.append_object(@table.context["all_records"])
         expression.append_operation(Operation::CALL, 0)
       else
-        combined_builder = builders.inject(nil) do |previous, builder|
-          if previous.nil?
-            builder
-          else
-            previous & builder
-          end
+        combined_builder = builders.inject do |previous, builder|
+          previous & builder
         end
         combined_builder.build(expression, variable)
       end

  Modified: test/test-expression-builder.rb (+13 -0)
===================================================================
--- test/test-expression-builder.rb    2016-03-07 08:49:00 +0900 (54a8a50)
+++ test/test-expression-builder.rb    2016-03-23 23:32:33 +0900 (7bc961d)
@@ -186,6 +186,19 @@ class ExpressionBuilderTest < Test::Unit::TestCase
                    result.collect {|record| record.key.key})
     end
 
+    def test_and_array_nested
+      result =****@users***** do |record|
+        conditions = []
+        conditions << [(record.hp > 100)]
+        conditions << []
+        conditions << [[[(record.hp < 200)]]]
+        conditions << [[]]
+        conditions
+      end
+      assert_equal(["gunyara-kun"],
+                   result.collect {|record| record.key.key})
+    end
+
     def test_or
       result =****@users***** do |record|
         (record["hp"] == 150) | (record["hp"] > 150)
-------------- next part --------------
HTML����������������������������...
Download 



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