patrun 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -2
- data/lib/patrun.rb +25 -18
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 843bee096a13b8e5b761157a25924626508843b8
|
4
|
+
data.tar.gz: cc3f27186fdd5bd4b86e033e2078ac9b38ce4181
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
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
|
-
|
193
|
-
|
194
|
-
|
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
|
-
|
232
|
+
self.toString()
|
229
233
|
end
|
230
234
|
|
231
235
|
|
232
|
-
def toJSON(
|
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
|
-
|
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
|
-
|
277
|
-
:
|
278
|
-
|
279
|
-
|
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]
|