patrun 0.1.1 → 0.1.2

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.
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