patrun 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -2
  3. data/lib/patrun.rb +25 -18
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0a552276944c28770e97035adabe76cb38332489
4
- data.tar.gz: 651c5a0732b33481159413c8e74c91985092708b
3
+ metadata.gz: 843bee096a13b8e5b761157a25924626508843b8
4
+ data.tar.gz: cc3f27186fdd5bd4b86e033e2078ac9b38ce4181
5
5
  SHA512:
6
- metadata.gz: 4afd8163e39836f303d037928e2c891dbe9528223ee2bdad1ec31bd0f9f22a708790e393aba63fe3eb1895e5176dc0e674c7e24e7dacfe704498e2b03d149290
7
- data.tar.gz: 4b3dcae0a76b89bcbb2efa3db29352e0243a35547fa16489d967ceb918fcde4347e910e0a91c974f01c616c9037644c4cb3551d103c1148037d2a4ed97a1fa60
6
+ metadata.gz: bf36e705222405c09f899dcc7b7a955f9e5284649b8e3aa126b18dcaca8eacfc12152a66c6fda968c5842357a6072f246d3e162403295fbff15b2c5a01ddfe46
7
+ data.tar.gz: 52947b305350bda7dd30b04574d62c7b4449d0e67330d46cef51303ad8200587b6b05d2680305598262e38afcb2e8cf52845f83f823544f6b96afbed0d818c2c
data/README.md CHANGED
@@ -29,7 +29,7 @@ It's basically _query-by-example_ for property sets.
29
29
  If you're using this library, feel free to contact me on twitter if you have any questions! :) [@colmharte](http://twitter.com/colmharte)
30
30
 
31
31
 
32
- Current Version: 0.1.1
32
+ Current Version: 0.1.2
33
33
 
34
34
  Tested on: Ruby 2.0.0p481
35
35
 
@@ -280,13 +280,18 @@ pm = Patrun.new()
280
280
  .add({:a => 1, :b => 1},'B1')
281
281
  .add({:a => 1, :b => 2},'B2')
282
282
 
283
- # finds nothing: []
283
+ # finds:
284
+ # [ { match: { :a => '1', :b => '1' }, :data => 'B1' },
285
+ # { match: { :a => '1', :b => '2' }, :data => 'B2' } ]
284
286
  puts pm.list({:a => 1})
285
287
 
286
288
  # finds:
287
289
  # [ { match: { :a => '1', :b => '1' }, :data => 'B1' },
288
290
  # { match: { :a => '1', :b => '2' }, :data => 'B2' } ]
289
291
  puts pm.list({:a => 1, :b => '*'})
292
+
293
+ # finds nothing: []
294
+ puts pm.list({:c => 1})
290
295
  ```
291
296
 
292
297
  If you provide no pattern argument at all, _list_ will list all patterns that have been added.
data/lib/patrun.rb CHANGED
@@ -12,7 +12,7 @@ class Patrun
12
12
  customizer = @custom.call(self, pat, data)
13
13
  end
14
14
 
15
- pat = pat.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
15
+ pat = pat.inject({}){|memo,(k,v)| memo[k.to_sym] = v.to_s; memo}
16
16
 
17
17
  keys = pat.keys.sort()
18
18
 
@@ -78,12 +78,12 @@ class Patrun
78
78
 
79
79
  def find(pat, exact = false)
80
80
 
81
- pat = pat.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
82
-
83
81
  if nil == pat
84
82
  return nil
85
83
  end
86
84
 
85
+ pat = pat.inject({}){|memo,(k,v)| memo[k.to_sym] = v.to_s; memo}
86
+
87
87
  keymap = @top
88
88
  data = @top[:d] || nil
89
89
  finalfind = @top[:f]
@@ -125,7 +125,7 @@ class Patrun
125
125
  end
126
126
 
127
127
  # special case for default with no properties
128
- if nil == data && 0 == patlen && nil != top[:d]
128
+ if nil == data && 0 == patlen && nil != @top[:d]
129
129
  data = top[:d]
130
130
  finalfind = top[:f]
131
131
  end
@@ -142,11 +142,14 @@ class Patrun
142
142
  end
143
143
 
144
144
  def remove(pat)
145
+
145
146
  keymap = @top
146
147
  data = nil
147
148
  key = nil
148
149
  path = []
149
150
 
151
+ pat = pat.inject({}){|memo,(k,v)| memo[k.to_sym] = v.to_s; memo}
152
+
150
153
  loop do
151
154
  key = keymap[:k]
152
155
 
@@ -188,15 +191,16 @@ class Patrun
188
191
  acc = []
189
192
 
190
193
  if @top[:d]
191
-
192
- acc.push({:match => {},
193
- :data => @top[:d],
194
- :find => top[:f]
195
- })
194
+ item = {:match => {},
195
+ :data => @top[:d]}
196
+ if @top[:f] != nil
197
+ item[:find] = @top[:f]
198
+ end
199
+ acc.push(item)
196
200
  end
197
201
 
198
202
  if pat != nil
199
- pat = pat.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
203
+ pat = pat.inject({}){|memo,(k,v)| memo[k.to_sym] = v.to_s; memo}
200
204
  end
201
205
  descend(pat, exact, @top, {}, merge({}, pat), acc)
202
206
 
@@ -225,11 +229,11 @@ class Patrun
225
229
 
226
230
 
227
231
  def inspect
228
- this.toString()
232
+ self.toString()
229
233
  end
230
234
 
231
235
 
232
- def toJSON(indent)
236
+ def toJSON()
233
237
 
234
238
  @top.to_json()
235
239
 
@@ -240,7 +244,7 @@ class Patrun
240
244
 
241
245
 
242
246
  def indent(o,d)
243
- for i in 0..d
247
+ d.times do
244
248
  o.push(' ')
245
249
  end
246
250
  end
@@ -273,11 +277,14 @@ class Patrun
273
277
  nextkeymap &&
274
278
  nextkeymap[:d]
275
279
 
276
- acc.push({
277
- :match => valitermatch,
278
- :data => nextkeymap[:d],
279
- :find => nextkeymap[:f]
280
- })
280
+ item = {:match => valitermatch,
281
+ :data => nextkeymap[:d]}
282
+
283
+ if nextkeymap[:f] != nil
284
+ item[:find] = nextkeymap[:f]
285
+ end
286
+
287
+ acc.push(item)
281
288
  end
282
289
 
283
290
  if nextkeymap && nextkeymap[:v]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: patrun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colm Harte