textquery 0.1.2 → 0.1.3
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/.gitignore +2 -0
- data/VERSION +1 -1
- data/lib/textquery/textquery.rb +2 -3
- data/lib/textquery/textquery_grammar.treetop +6 -3
- data/spec/textquery_spec.rb +26 -0
- metadata +3 -2
data/.gitignore
ADDED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/lib/textquery/textquery.rb
CHANGED
@@ -72,8 +72,7 @@ class TextQuery
|
|
72
72
|
private
|
73
73
|
|
74
74
|
def update_options(options)
|
75
|
-
@options = {:delim => ' '}.merge
|
76
|
-
@options[:delim] =
|
75
|
+
@options = {:delim => ' '}.merge(options)
|
76
|
+
@options[:delim] = "(#{[@options[:delim]].flatten.map { |opt| Regexp.escape(opt) }.join("|")})"
|
77
77
|
end
|
78
|
-
|
79
78
|
end
|
@@ -49,7 +49,11 @@ grammar TextQueryGrammar
|
|
49
49
|
end
|
50
50
|
|
51
51
|
rule words
|
52
|
-
[
|
52
|
+
[^'"]+ <WordMatch>
|
53
|
+
end
|
54
|
+
|
55
|
+
rule quote
|
56
|
+
['"]
|
53
57
|
end
|
54
58
|
|
55
59
|
rule value
|
@@ -65,7 +69,7 @@ grammar TextQueryGrammar
|
|
65
69
|
end
|
66
70
|
}
|
67
71
|
/
|
68
|
-
|
72
|
+
quote space words space quote {
|
69
73
|
def eval(text, opt)
|
70
74
|
words.eval(text, opt)
|
71
75
|
end
|
@@ -73,5 +77,4 @@ grammar TextQueryGrammar
|
|
73
77
|
/
|
74
78
|
word
|
75
79
|
end
|
76
|
-
|
77
80
|
end
|
data/spec/textquery_spec.rb
CHANGED
@@ -132,6 +132,7 @@ describe TextQuery do
|
|
132
132
|
|
133
133
|
# shakespeare got nothin' on ruby...
|
134
134
|
parse("'to be' OR NOT 'to be'").eval("to be").should be_true
|
135
|
+
parse('"to be" OR NOT "to be"').eval("to be").should be_true
|
135
136
|
end
|
136
137
|
|
137
138
|
it "should treat spaces as implicit ANDs" do
|
@@ -199,4 +200,29 @@ describe TextQuery do
|
|
199
200
|
TextQuery.new("a AND CD", :ignorecase => false).match?("A b cD").should be_false
|
200
201
|
end
|
201
202
|
|
203
|
+
context 'delimiters' do
|
204
|
+
it 'should default to space delimiter' do
|
205
|
+
TextQuery.new("a").match?("a b").should be_true
|
206
|
+
TextQuery.new("a").match?("a*b").should be_false
|
207
|
+
end
|
208
|
+
|
209
|
+
it 'should accept a string delimiter' do
|
210
|
+
TextQuery.new("a", :delim => "*").match?("a*b").should be_true
|
211
|
+
TextQuery.new("a", :delim => "*").match?("a b").should be_false
|
212
|
+
end
|
213
|
+
|
214
|
+
it 'should accept an array of delimiters' do
|
215
|
+
TextQuery.new("a", :delim => ["*"]).match?("a*b").should be_true
|
216
|
+
end
|
217
|
+
|
218
|
+
it 'should OR delimiters together when provided as an array' do
|
219
|
+
TextQuery.new("a", :delim => ["*", "|"]).match?("a|b").should be_true
|
220
|
+
TextQuery.new("a", :delim => ["*", "|"]).match?("a*b").should be_true
|
221
|
+
TextQuery.new("a", :delim => ["*", "|"]).match?("a b").should be_false
|
222
|
+
end
|
223
|
+
|
224
|
+
it 'should not match just the delimiter' do
|
225
|
+
TextQuery.new("a*b", :delim => ["*", "<"]).match?("over<under").should be_false
|
226
|
+
end
|
227
|
+
end
|
202
228
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: textquery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Grigorik
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-05 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -31,6 +31,7 @@ extensions: []
|
|
31
31
|
extra_rdoc_files:
|
32
32
|
- README.rdoc
|
33
33
|
files:
|
34
|
+
- .gitignore
|
34
35
|
- README.rdoc
|
35
36
|
- Rakefile
|
36
37
|
- VERSION
|