tire 0.1.6 → 0.1.7
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.
- data/lib/tire/search/query.rb +8 -4
- data/lib/tire/version.rb +1 -1
- data/test/unit/search_query_test.rb +13 -0
- data/test/unit/search_test.rb +21 -0
- metadata +4 -4
data/lib/tire/search/query.rb
CHANGED
@@ -4,7 +4,7 @@ module Tire
|
|
4
4
|
class Query
|
5
5
|
def initialize(&block)
|
6
6
|
@value = {}
|
7
|
-
self.instance_eval(&block) if block_given?
|
7
|
+
block.arity < 1 ? self.instance_eval(&block) : block.call(self) if block_given?
|
8
8
|
end
|
9
9
|
|
10
10
|
def term(field, value)
|
@@ -27,7 +27,11 @@ module Tire
|
|
27
27
|
def boolean(options={}, &block)
|
28
28
|
# TODO: Try to get rid of the `boolean` method
|
29
29
|
raise ArgumentError, "Please pass a block to boolean query" unless block_given?
|
30
|
-
|
30
|
+
|
31
|
+
@boolean ||= BooleanQuery.new(options)
|
32
|
+
block.arity < 1 ? @boolean.instance_eval(&block) : block.call(@boolean) if block_given?
|
33
|
+
@value[:bool] = @boolean.to_hash
|
34
|
+
@value
|
31
35
|
end
|
32
36
|
|
33
37
|
def all
|
@@ -66,7 +70,7 @@ module Tire
|
|
66
70
|
def initialize(options={}, &block)
|
67
71
|
@options = options
|
68
72
|
@value = {}
|
69
|
-
self.instance_eval(&block)
|
73
|
+
block.arity < 1 ? self.instance_eval(&block) : block.call(self) if block_given?
|
70
74
|
end
|
71
75
|
|
72
76
|
def must(&block)
|
@@ -85,7 +89,7 @@ module Tire
|
|
85
89
|
end
|
86
90
|
|
87
91
|
def to_hash
|
88
|
-
|
92
|
+
@value.update(@options)
|
89
93
|
end
|
90
94
|
end
|
91
95
|
|
data/lib/tire/version.rb
CHANGED
@@ -113,6 +113,19 @@ module Tire::Search
|
|
113
113
|
assert_equal( { :query_string => {:query => 'fuu'} }, query[:bool][:must_not].first )
|
114
114
|
end
|
115
115
|
|
116
|
+
should "allow passing variables from outer scope" do
|
117
|
+
q1 = 'foo'
|
118
|
+
q2 = 'bar'
|
119
|
+
query = Query.new.boolean do |boolean|
|
120
|
+
boolean.must { |query| query.string q1 }
|
121
|
+
boolean.must { |query| query.string q2 }
|
122
|
+
end
|
123
|
+
|
124
|
+
assert_equal( 2, query[:bool][:must].size, query[:bool][:must].inspect )
|
125
|
+
assert_equal( { :query_string => {:query => 'foo'} }, query[:bool][:must].first )
|
126
|
+
assert_equal( { :query_string => {:query => 'bar'} }, query[:bool][:must].last )
|
127
|
+
end
|
128
|
+
|
116
129
|
end
|
117
130
|
|
118
131
|
end
|
data/test/unit/search_test.rb
CHANGED
@@ -253,6 +253,27 @@ module Tire
|
|
253
253
|
assert_equal( { 'terms' => { 'tags' => ['baz'] } }, query['must'].last)
|
254
254
|
end
|
255
255
|
|
256
|
+
should "allow passing variables from outer scope" do
|
257
|
+
q1 = 'foo'
|
258
|
+
q2 = 'bar'
|
259
|
+
|
260
|
+
assert_nothing_raised do
|
261
|
+
@search = Search::Search.new('index') do
|
262
|
+
query do
|
263
|
+
boolean do
|
264
|
+
must { string q1 }
|
265
|
+
must { string q2 }
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
271
|
+
hash = MultiJson.decode(@search.to_json)
|
272
|
+
query = hash['query']['bool']
|
273
|
+
|
274
|
+
assert_equal 2, query['must'].size
|
275
|
+
end
|
276
|
+
|
256
277
|
end
|
257
278
|
|
258
279
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 7
|
10
|
+
version: 0.1.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Karel Minarik
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-06-
|
18
|
+
date: 2011-06-07 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|