textquery 0.1.5 → 0.1.6

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.5
1
+ 0.1.6
@@ -48,12 +48,20 @@ grammar TextQueryGrammar
48
48
  [^\s\(\)]+ <WordMatch>
49
49
  end
50
50
 
51
- rule words
52
- [^'"]+ <WordMatch>
51
+ rule single_quote
52
+ [']
53
53
  end
54
54
 
55
- rule quote
56
- ['"]
55
+ rule single_quote_words
56
+ [^']+ <WordMatch>
57
+ end
58
+
59
+ rule double_quote
60
+ ["]
61
+ end
62
+
63
+ rule double_quote_words
64
+ [^"]+ <WordMatch>
57
65
  end
58
66
 
59
67
  rule value
@@ -69,9 +77,15 @@ grammar TextQueryGrammar
69
77
  end
70
78
  }
71
79
  /
72
- quote space words space quote {
80
+ double_quote space double_quote_words space double_quote {
81
+ def eval(text, opt)
82
+ double_quote_words.eval(text, opt)
83
+ end
84
+ }
85
+ /
86
+ single_quote space single_quote_words space single_quote {
73
87
  def eval(text, opt)
74
- words.eval(text, opt)
88
+ single_quote_words.eval(text, opt)
75
89
  end
76
90
  }
77
91
  /
@@ -135,6 +135,16 @@ describe TextQuery do
135
135
  parse('"to be" OR NOT "to be"').eval("to be").should be_true
136
136
  end
137
137
 
138
+ it "should accept mixed quotes inside the exact match queries" do
139
+ parse("seattle's best").eval("seattle's best").should be_true
140
+
141
+ parse("peets OR \"seattle's best\"").eval("peets").should be_true
142
+ parse("peets OR \"seattle's best\"").eval("seattle's").should be_false
143
+
144
+ parse("\"seattle's best\"").eval("seattle's best coffee").should be_true
145
+ parse('"seattle\'s best"').eval("seattle's best coffee").should be_true
146
+ end
147
+
138
148
  it "should treat spaces as implicit ANDs" do
139
149
  parse("a b").eval("a c b").should be_true
140
150
  parse("b a c").eval("a c b").should be_true
@@ -172,7 +182,7 @@ describe TextQuery do
172
182
 
173
183
  parse("~a~3").eval("daffy").should be_true
174
184
  parse("a~1").eval("adf").should be_false
175
-
185
+
176
186
  parse("a~1 AND b").eval("adf b").should be_false
177
187
  parse("a~2 AND b").eval("adf b").should be_true
178
188
  parse("a~3 AND b").eval("adf b").should be_false
data/textquery.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{textquery}
8
- s.version = "0.1.5"
8
+ s.version = "0.1.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ilya Grigorik"]
12
- s.date = %q{2010-07-26}
12
+ s.date = %q{2010-08-18}
13
13
  s.description = %q{Evaluate any text against a collection of match rules}
14
14
  s.email = %q{ilya@igvita.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 5
9
- version: 0.1.5
8
+ - 6
9
+ version: 0.1.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - Ilya Grigorik
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-07-26 00:00:00 -04:00
17
+ date: 2010-08-18 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency