arelastic 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6c0ce2da7d77141b851c8703286f22b406a40028
4
- data.tar.gz: a66314d68fcc9f0ecf0cea1a3440ffb067f146ef
3
+ metadata.gz: d79ffe813785f55f0bd3e040733b153097536ce7
4
+ data.tar.gz: bee96019633d9749923bd18c89e98f6534a77f99
5
5
  SHA512:
6
- metadata.gz: f2659cf3dfc4b2a0ec4f9e4d94e7a68ba374c191476b21eb5099a82101a538627e5abea693275f5ea6478247566540dd58b5279fa81bde02ceab0e409549d3bf
7
- data.tar.gz: 7076ff5e97cdfbc4b4130890b4f8e97c8206dd3ee86891288af7b4106f8f15c95d31bfeb9cd5e9c229e82f1834924707eaa5b88d5300c6eb5ad3aa2b82c9459e
6
+ metadata.gz: a9ec7ea6554904b71cc2b2d3df584f50650ce0c8a298df1c9bb119c126a1d739c5e581f98a07773c7412e80e7b3cc191e268c7fefb19ba186d43094abf2271fa
7
+ data.tar.gz: 55d443c8e3f3a8cc67699d8096c62a527bdab3306d3b3748aa15085ad5c9e57d708e3c6815c11a5816d6fdcbe75f2a2b3e446e1a37f2d09efd3c4a87f84bb195
@@ -52,6 +52,10 @@ module Arelastic
52
52
  Arelastic::Filters::Missing.new field, options
53
53
  end
54
54
 
55
+ def regexp other
56
+ Arelastic::Filters::Regexp.new field, other
57
+ end
58
+
55
59
  def gteq other
56
60
  range 'gte' => other
57
61
  end
@@ -74,4 +78,4 @@ module Arelastic
74
78
  end
75
79
  end
76
80
  end
77
- end
81
+ end
@@ -15,6 +15,7 @@ require 'arelastic/filters/or'
15
15
  require 'arelastic/filters/prefix'
16
16
  require 'arelastic/filters/query'
17
17
  require 'arelastic/filters/range'
18
+ require 'arelastic/filters/regexp'
18
19
  require 'arelastic/filters/script'
19
20
  require 'arelastic/filters/term'
20
21
  require 'arelastic/filters/terms'
@@ -0,0 +1,24 @@
1
+ module Arelastic
2
+ module Filters
3
+ #
4
+ # Implements support for the Regexp filter.
5
+ #
6
+ # Does not support Ruby `Regexp` objects, because Elasticsearch's regular
7
+ # expression syntax only supports a subset of the operators usually
8
+ # implemented in a fully-featured regex engine.
9
+ #
10
+ # Reference: https://www.elastic.co/guide/en/elasticsearch/reference/1.7/query-dsl-regexp-filter.html
11
+ #
12
+ class Regexp < Filter
13
+ binary 'regexp'
14
+
15
+ def initialize(field, value, options = {})
16
+ if value.is_a?(::Regexp)
17
+ raise TypeError.new('Regexp objects are not allowed to be Regexp filter values')
18
+ end
19
+
20
+ super
21
+ end
22
+ end
23
+ end
24
+ end
@@ -59,6 +59,11 @@ class Arelastic::Builders::FilterTest < Minitest::Test
59
59
  assert_equal expected, builder.missing.as_elastic
60
60
  end
61
61
 
62
+ def test_regexp
63
+ expected = {"regexp" => {"color" => "green(-blue)?"}}
64
+ assert_equal expected, builder.regexp("green(-blue)?").as_elastic
65
+ end
66
+
62
67
  def test_range
63
68
  expected = {"range" => {"color" => {"lt" => 5}}}
64
69
  assert_equal expected, builder.lt(5).as_elastic
@@ -0,0 +1,15 @@
1
+ require 'helper'
2
+
3
+ class Arelastic::Filters::ExistsTest < Minitest::Test
4
+ def test_setting_value_as_regexp_object
5
+ assert_raises TypeError do
6
+ Arelastic::Filters::Regexp.new('color', /yellow(-green)?/)
7
+ end
8
+ end
9
+
10
+ def test_string_value
11
+ expected = { 'regexp' => { 'color' => 'blue(-green)?' } }
12
+
13
+ assert_equal expected, Arelastic::Filters::Regexp.new('color', 'blue(-green)?').as_elastic
14
+ end
15
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arelastic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Higgins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-15 00:00:00.000000000 Z
11
+ date: 2016-02-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Build Elastic Search queries with objects
14
14
  email: developer@matthewhiggins.com
@@ -55,6 +55,7 @@ files:
55
55
  - lib/arelastic/filters/prefix.rb
56
56
  - lib/arelastic/filters/query.rb
57
57
  - lib/arelastic/filters/range.rb
58
+ - lib/arelastic/filters/regexp.rb
58
59
  - lib/arelastic/filters/script.rb
59
60
  - lib/arelastic/filters/term.rb
60
61
  - lib/arelastic/filters/terms.rb
@@ -126,6 +127,7 @@ files:
126
127
  - test/arelastic/filters/nested_test.rb
127
128
  - test/arelastic/filters/not_test.rb
128
129
  - test/arelastic/filters/query_test.rb
130
+ - test/arelastic/filters/regexp_test.rb
129
131
  - test/arelastic/filters/script_test.rb
130
132
  - test/arelastic/mappings/types/binary_test.rb
131
133
  - test/arelastic/mappings/types/multi_field_test.rb