keyword_search 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,10 +1,13 @@
1
+ = 1.3.1 / 2007-10-09
2
+
3
+ * Tests/README update for case sensitivity change
4
+
1
5
  = 1.3.0 / 2007-10-09
2
6
 
3
7
  * Conversion to Ragel-based parser (faster, less resource-intensive)
4
- * Better support for other character sets, allow apostrophes in
5
- unquoted words
8
+ * Better support for other character sets, allow apostrophes in unquoted words
6
9
  * Test suite now uses test/spec
7
- * API Should be backwards compatible
10
+ * API is almost backwards compatible (though keywords/values are now case sensitive; downcase the input manually if you want the old behavior)
8
11
 
9
12
  = 1.2.0 / 2007-05-09
10
13
 
data/README.txt CHANGED
@@ -6,19 +6,17 @@ keyword_search
6
6
 
7
7
  Generic library to parse GMail-style search strings for keyword/value pairs; supports definition of valid keywords and handling of quoted values.
8
8
 
9
- == FEATURES/PROBLEMS:
9
+ == FEATURES:
10
10
 
11
11
  The library features a very simple, easy-to-use API.
12
12
  * Define handlers for supported keywords with blocks
13
13
  * Define the default keyword (values not part of a keyword/value pair)
14
14
 
15
- Various notes:
16
- * Quoted values are supported.
17
- * Input is automatically downcased (both keywords and values should be assumed to be in lowercase)
18
-
19
15
  Development Roadmap:
20
16
  2.0:: Add negation and grouping (will break API backwards compatibility)
21
17
 
18
+ Note:: As of 1.3.0, input to KeywordSearch.search is no longer automatically downcased, allowing for case sensitive keyword and value pairs. If you want case insensitivity, downcase the input before you invoke the method.
19
+
22
20
  == SYNOPSIS:
23
21
 
24
22
  Here's an example of usage from Rails (though the library is generic, and could presumably be used for any Ruby project)
data/Rakefile CHANGED
@@ -3,7 +3,7 @@
3
3
  require 'rubygems'
4
4
  require 'hoe'
5
5
 
6
- Hoe.new('keyword_search', '1.3.0') do |p|
6
+ Hoe.new('keyword_search', '1.3.1') do |p|
7
7
  p.rubyforge_name = 'codefluency'
8
8
  p.summary = 'Generic support for extracting GMail-style search keywords/values from strings'
9
9
  p.description = p.paragraphs_of('README.txt', 2..5).join("\n\n")
@@ -7,7 +7,8 @@ module KeywordSearch
7
7
 
8
8
  class << self
9
9
 
10
- # line 44 "lib/keyword_search.rl"
10
+ # line 48 "lib/keyword_search.rl"
11
+
11
12
 
12
13
  def search(input_string, definition=nil, &block)
13
14
  definition ||= Definition.new(&block)
@@ -31,8 +32,9 @@ class << self
31
32
  private :_parser_actions, :_parser_actions=
32
33
  end
33
34
  self._parser_actions = [
34
- 0, 1, 3, 1, 4, 2, 0, 2,
35
- 2, 1, 0
35
+ 0, 1, 3, 1, 5, 1, 6, 2,
36
+ 0, 2, 2, 1, 0, 3, 0, 2,
37
+ 4, 3, 1, 0, 4
36
38
  ]
37
39
 
38
40
  class << self
@@ -97,9 +99,9 @@ class << self
97
99
  private :_parser_trans_actions_wi, :_parser_trans_actions_wi=
98
100
  end
99
101
  self._parser_trans_actions_wi = [
100
- 5, 3, 5, 5, 3, 5, 1, 0,
101
- 0, 0, 0, 8, 8, 0, 8, 1,
102
- 0, 0, 0, 0, 0, 1, 0, 0,
102
+ 7, 5, 13, 13, 5, 7, 1, 0,
103
+ 0, 0, 0, 17, 17, 0, 10, 1,
104
+ 0, 0, 0, 3, 0, 1, 0, 3,
103
105
  0, 1, 0, 0, 0, 0
104
106
  ]
105
107
 
@@ -121,22 +123,23 @@ class << self
121
123
  end
122
124
  self.parser_en_main = 1;
123
125
 
124
- # line 62 "lib/keyword_search.rl"
126
+ # line 66 "lib/keyword_search.rl"
125
127
  p = 0
126
128
  pe = data.length
127
129
  key = nil
128
130
  tokstart = nil
129
131
  results = {}
132
+ quotes = 0
130
133
 
131
- # line 133 "lib/keyword_search.rb"
134
+ # line 135 "lib/keyword_search.rb"
132
135
  begin
133
136
  p ||= 0
134
137
  pe ||= data.length
135
138
  cs = parser_start
136
139
  end
137
- # line 68 "lib/keyword_search.rl"
140
+ # line 73 "lib/keyword_search.rl"
138
141
 
139
- # line 141 "lib/keyword_search.rb"
142
+ # line 143 "lib/keyword_search.rb"
140
143
  begin
141
144
  _klen, _trans, _keys, _acts, _nacts = nil
142
145
  if p != pe
@@ -235,11 +238,21 @@ when 3:
235
238
  end
236
239
  # line 26 "lib/keyword_search.rl"
237
240
  when 4:
238
- # line 42 "lib/keyword_search.rl"
241
+ # line 32 "lib/keyword_search.rl"
242
+ begin
243
+ quotes += 1 end
244
+ # line 32 "lib/keyword_search.rl"
245
+ when 5:
246
+ # line 34 "lib/keyword_search.rl"
247
+ begin
248
+ quotes -= 1 end
249
+ # line 34 "lib/keyword_search.rl"
250
+ when 6:
251
+ # line 46 "lib/keyword_search.rl"
239
252
  begin
240
253
  raise ParseError, "At offset #{p}, near: '#{data[p,10]}'" end
241
- # line 42 "lib/keyword_search.rl"
242
- # line 244 "lib/keyword_search.rb"
254
+ # line 46 "lib/keyword_search.rl"
255
+ # line 256 "lib/keyword_search.rb"
243
256
  end # action switch
244
257
  end
245
258
  end while false
@@ -251,10 +264,13 @@ when 4:
251
264
  end
252
265
  end
253
266
  end
254
- # line 69 "lib/keyword_search.rl"
267
+ # line 74 "lib/keyword_search.rl"
255
268
 
256
- # line 258 "lib/keyword_search.rb"
257
- # line 70 "lib/keyword_search.rl"
269
+ # line 270 "lib/keyword_search.rb"
270
+ # line 75 "lib/keyword_search.rl"
271
+ unless quotes.zero?
272
+ raise ParseError, "Unclosed quotes"
273
+ end
258
274
  results
259
275
  end
260
276
 
@@ -176,6 +176,30 @@ context "KeywordSearch" do
176
176
  end
177
177
  end
178
178
  end
179
+
180
+ specify "keywords are case sensitive" do
181
+ result = nil
182
+ KeywordSearch.search(%<Text:justtesting>) do |with|
183
+ with.keyword :text do |values|
184
+ result = :small
185
+ end
186
+ with.keyword :Text do |values|
187
+ result = :big
188
+ end
189
+ end
190
+ assert_equal :big, result
191
+ end
192
+
193
+ specify "values are case sensitive" do
194
+ result = nil
195
+ KeywordSearch.search(%<text:Big>) do |with|
196
+ with.keyword :text do |values|
197
+ result = values.first
198
+ end
199
+ end
200
+ assert_equal 'Big', result
201
+ end
202
+
179
203
  end
180
204
 
181
205
 
metadata CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: keyword_search
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.3.0
6
+ version: 1.3.1
7
7
  date: 2007-10-09 00:00:00 -05:00
8
8
  summary: Generic support for extracting GMail-style search keywords/values from strings
9
9
  require_paths:
@@ -11,7 +11,7 @@ require_paths:
11
11
  email: bruce@codefluency.com
12
12
  homepage: " http://codefluency.rubyforge.org/keyword_search"
13
13
  rubyforge_project: codefluency
14
- description: "== FEATURES/PROBLEMS: The library features a very simple, easy-to-use API. * Define handlers for supported keywords with blocks * Define the default keyword (values not part of a keyword/value pair) Various notes: * Quoted values are supported. * Input is automatically downcased (both keywords and values should be assumed to be in lowercase) Development Roadmap: 2.0:: Add negation and grouping (will break API backwards compatibility) == SYNOPSIS:"
14
+ description: "== FEATURES: The library features a very simple, easy-to-use API. * Define handlers for supported keywords with blocks * Define the default keyword (values not part of a keyword/value pair) Development Roadmap: 2.0:: Add negation and grouping (will break API backwards compatibility) Note:: As of 1.3.0, input to KeywordSearch.search is no longer automatically downcased, allowing for case sensitive keyword and value pairs. If you want case insensitivity, downcase the input before you invoke the method. == SYNOPSIS:"
15
15
  autorequire:
16
16
  default_executable:
17
17
  bindir: bin