[Groonga-commit] ranguba/groonga-client at e4e285b [master] Remove needless FilterBetweenParameter

Zurück zum Archiv-Index

Kouhei Sutou null+****@clear*****
Thu Apr 27 11:19:37 JST 2017


Kouhei Sutou	2017-04-27 11:19:37 +0900 (Thu, 27 Apr 2017)

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

  Message:
    Remove needless FilterBetweenParameter
    
    between("column", ...) is deprecated. Use between(:column, ...)
    instead.

  Modified files:
    lib/groonga/client/request/select.rb
    test/request/select/test-filter.rb

  Modified: lib/groonga/client/request/select.rb (+28 -40)
===================================================================
--- lib/groonga/client/request/select.rb    2017-04-27 11:14:40 +0900 (1bdc5c2)
+++ lib/groonga/client/request/select.rb    2017-04-27 11:19:37 +0900 (92556c6)
@@ -302,10 +302,23 @@ module Groonga
           #
           # @since 0.4.4
           def between(column_name, min, min_border, max, max_border)
-            parameter = FilterBetweenParameter.new(column_name,
-                                                   min, min_border,
-                                                   max, max_border)
-            add_parameter(FilterMerger, parameter)
+            # TODO: Accept not only column name but also literal as
+            # the first argument.
+            column_name = column_namify(column_name,
+                                        "first",
+                                        "#{self.class}\##{__method__}")
+            expression = "between(%{column_name}"
+            expression << ", %{min}"
+            expression << ", %{min_border}"
+            expression << ", %{max}"
+            expression << ", %{max_border}"
+            expression << ")"
+            @request.filter(expression,
+                            column_name: column_name,
+                            min: min,
+                            min_border: min_border,
+                            max: max,
+                            max_border: max_border)
           end
 
           # Adds a `in_values` condition then returns a new `select`
@@ -338,14 +351,9 @@ module Groonga
 
             # TODO: Accept not only column name but also literal as
             # the first argument.
-            if column_name.is_a?(String)
-              message = "column name (the first argument) "
-              message << "of #{self.class}\##{__method__} "
-              message << "should be Symbol: #{column_name.inspect}: "
-              message << caller(1, 1)[0]
-              warn(message)
-              column_name = column_name.to_sym
-            end
+            column_name = column_namify(column_name,
+                                        "first",
+                                        "#{self.class}\##{__method__}")
             expression_values = {column_name: column_name}
             expression = "in_values(%{column_name}"
             values.each_with_index do |value, i|
@@ -357,8 +365,14 @@ module Groonga
           end
 
           private
-          def add_parameter(merger, parameter)
-            @request.__send__(:add_parameter, merger, parameter)
+          def column_namify(column_name, ith, signature)
+            return column_name unless column_name.is_a?(String)
+
+            message = "column name (the #{ith} argument) of #{signature} "
+            message << "should be Symbol: #{column_name.inspect}: "
+            message << caller(2, 1)[0]
+            warn(message)
+            column_name.to_sym
           end
         end
 
@@ -615,32 +629,6 @@ module Groonga
           end
         end
 
-        class FilterBetweenParameter
-          include ScriptSyntaxValueEscapable
-
-          def initialize(column_name,
-                         min, min_border,
-                         max, max_border)
-            @column_name = column_name
-            @min = min
-            @min_border = min_border
-            @max = max
-            @max_border = max_border
-          end
-
-          def to_parameters
-            filter = "between(#{@column_name}"
-            filter << ", #{escape_script_syntax_value(@min)}"
-            filter << ", #{escape_script_syntax_value(@min_border)}"
-            filter << ", #{escape_script_syntax_value(@max)}"
-            filter << ", #{escape_script_syntax_value(@max_border)}"
-            filter << ")"
-            {
-              filter: filter,
-            }
-          end
-        end
-
         # @private
         class OutputColumnsParameter < ValuesParameter
           def initialize(prefix, output_columns)

  Modified: test/request/select/test-filter.rb (+1 -1)
===================================================================
--- test/request/select/test-filter.rb    2017-04-27 11:14:40 +0900 (151c65a)
+++ test/request/select/test-filter.rb    2017-04-27 11:19:37 +0900 (5b1eeda)
@@ -256,7 +256,7 @@ title == "[\"He\\ llo\"]"
                        :table => "posts",
                        :filter => "between(ages, 2, \"include\", 29, \"exclude\")",
                      },
-                     between("ages", 2, "include", 29, "exclude"))
+                     between(:ages, 2, "include", 29, "exclude"))
       end
     end
 
-------------- next part --------------
HTML����������������������������...
Download 



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