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