[Groonga-commit] ranguba/rroonga at e2776a0 [master] Add RegexpExpressionBuilder

Back to archive index

Masafumi Yokoyama null+****@clear*****
Wed Apr 8 12:42:14 JST 2015


Masafumi Yokoyama	2015-04-08 12:42:14 +0900 (Wed, 08 Apr 2015)

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

  Merged 4f204e2: Merge pull request #89 from ranguba/add-regexp-expression-builder

  Message:
    Add RegexpExpressionBuilder
    
    GitHub: #67

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

  Modified: lib/groonga/expression-builder.rb (+13 -0)
===================================================================
--- lib/groonga/expression-builder.rb    2015-04-08 12:36:38 +0900 (448c84f)
+++ lib/groonga/expression-builder.rb    2015-04-08 12:42:14 +0900 (30089a4)
@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
 #
+# Copyright (C) 2015  Masafumi Yokoyama <yokoyama �� clear-code.com>
 # Copyright (C) 2009-2012  Kouhei Sutou <kou �� clear-code.com>
 #
 # This library is free software; you can redistribute it and/or
@@ -173,7 +174,12 @@ module Groonga
           raise ArgumentError,
                  "match word should not be nil: #{full_column_name}"
         end
+
+        if other.is_a?(Regexp)
+          RegexpExpressionBuilder.new(self, normalize(other.source))
+        else
         MatchExpressionBuilder.new(self, normalize(other))
+        end
       end
 
       def <(other)
@@ -333,6 +339,13 @@ module Groonga
     end
 
     # @private
+    class RegexpExpressionBuilder < BinaryExpressionBuilder
+      def initialize(column_value_builder, value)
+        super(Groonga::Operation::REGEXP, column_value_builder, value)
+      end
+    end
+
+    # @private
     class LessExpressionBuilder < BinaryExpressionBuilder
       def initialize(column_value_builder, value)
         super(Groonga::Operation::LESS, column_value_builder, value)

  Modified: test/test-expression-builder.rb (+18 -0)
===================================================================
--- test/test-expression-builder.rb    2015-04-08 12:36:38 +0900 (31cc87b)
+++ test/test-expression-builder.rb    2015-04-08 12:42:14 +0900 (33f2bfa)
@@ -275,6 +275,24 @@ class ExpressionBuilderTest < Test::Unit::TestCase
       @users.add("ito",    :name => "Takashi Ito")
     end
 
+    class BlockTest < self
+      def test_match
+        result =****@users***** do |record|
+          record["name"] =~ /sh/
+        end
+        assert_equal(["ito", "suzuki"],
+                     result.collect {|record| record.key.key}.sort)
+      end
+
+      def test_not_match
+        result =****@users***** do |record|
+          record["name"] =~ /abcabcabc/
+        end
+        assert_equal([],
+                     result.collect {|record| record.key.key}.sort)
+      end
+    end
+
     class QueryStringTest < self
       def test_match
         result =****@users*****("name:~t")
-------------- next part --------------
HTML����������������������������...
下载 



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