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