dense 1.2.0 → 1.3.0
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/CHANGELOG.md +5 -0
- data/README.md +24 -0
- data/dense.gemspec +1 -1
- data/lib/dense/methods.rb +22 -0
- data/lib/dense.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6b0817224995549d7781d408ed728ce6c5da65e68a7ea0e3343af9be1c384ee3
|
|
4
|
+
data.tar.gz: 7b497011f2f93abe5071d525cfd7726063890510540833a5f21457c9b391964c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2f79ad03555da0dda0bacf23a06ce5daf3b997b24ef49813968a20b6208c61fcc0e5e740a0b0757d903ac8f0fc4d593fbe6d3f28a39de452d221aee2c27580a8
|
|
7
|
+
data.tar.gz: 799f68b5650b88b79ec1d070c3c054d72cccf85300f1864529a36fcc1a5c8fce2a22e6cc861edf60d5d085d8266bff5322408440fcf599829c33829f80bd74a0
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
|
@@ -342,6 +342,30 @@ Dense.paths(data, '..nada')
|
|
|
342
342
|
# => []
|
|
343
343
|
```
|
|
344
344
|
|
|
345
|
+
### `Dense.dig_deep(collection, glob)` and `Dense.dig_wide(collection, glob)`
|
|
346
|
+
|
|
347
|
+
Using `.path` underneath, returns the first matching with a deep or wide path.
|
|
348
|
+
|
|
349
|
+
```ruby
|
|
350
|
+
Dense.dig_deep(data, '..janitor')
|
|
351
|
+
# => nil
|
|
352
|
+
Dense.dig_deep(data, '..author')
|
|
353
|
+
# => 'Nigel Rees'
|
|
354
|
+
Dense.dig_deep(data, 'store..author')
|
|
355
|
+
# => 'Nigel Rees'
|
|
356
|
+
Dense.dig_deep(data, '..price')
|
|
357
|
+
# => 19.95
|
|
358
|
+
|
|
359
|
+
Dense.dig_deep(data, '..janitor')
|
|
360
|
+
# => nil
|
|
361
|
+
Dense.dig_deep(data, '..author')
|
|
362
|
+
# => 'Nigel Rees'
|
|
363
|
+
Dense.dig_deep(data, 'store..author')
|
|
364
|
+
# => 'Nigel Rees'
|
|
365
|
+
Dense.dig_deep(data, '..price')
|
|
366
|
+
# => 8.95
|
|
367
|
+
```
|
|
368
|
+
|
|
345
369
|
|
|
346
370
|
### KeyError and TypeError
|
|
347
371
|
|
data/dense.gemspec
CHANGED
|
@@ -30,7 +30,7 @@ Fetching deep in a dense structure. A kind of bastard of JSONPath.
|
|
|
30
30
|
s.add_runtime_dependency 'raabro', '~> 1.1', '>= 1.1.5'
|
|
31
31
|
|
|
32
32
|
#s.add_development_dependency 'rspec', '~> 3.7'
|
|
33
|
-
s.add_development_dependency 'probatio'
|
|
33
|
+
s.add_development_dependency 'probatio', '~> 1.6'
|
|
34
34
|
|
|
35
35
|
s.require_path = 'lib'
|
|
36
36
|
end
|
data/lib/dense/methods.rb
CHANGED
|
@@ -123,6 +123,28 @@ module Dense; class << self
|
|
|
123
123
|
Dense::Path.make(path).list(o)
|
|
124
124
|
end
|
|
125
125
|
|
|
126
|
+
def dig_deep(o, glob)
|
|
127
|
+
|
|
128
|
+
pa = Dense::Path.make(glob).enumerate(o)
|
|
129
|
+
.inject([ 0, nil ]) { |a, pa|
|
|
130
|
+
pac = pa.count('.')
|
|
131
|
+
pac > a[0] ? [ pac, pa ] : a }
|
|
132
|
+
.last
|
|
133
|
+
|
|
134
|
+
pa ? get(o, pa) : nil
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def dig_wide(o, glob)
|
|
138
|
+
|
|
139
|
+
pa = Dense::Path.make(glob).enumerate(o)
|
|
140
|
+
.inject([ 9_999_999_999, nil ]) { |a, pa|
|
|
141
|
+
pac = pa.count('.')
|
|
142
|
+
pac < a[0] ? [ pac, pa ] : a }
|
|
143
|
+
.last
|
|
144
|
+
|
|
145
|
+
pa ? get(o, pa) : nil
|
|
146
|
+
end
|
|
147
|
+
|
|
126
148
|
protected
|
|
127
149
|
|
|
128
150
|
def key_matches_collection?(k, c)
|
data/lib/dense.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dense
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- John Mettraux
|
|
@@ -33,16 +33,16 @@ dependencies:
|
|
|
33
33
|
name: probatio
|
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
|
35
35
|
requirements:
|
|
36
|
-
- - "
|
|
36
|
+
- - "~>"
|
|
37
37
|
- !ruby/object:Gem::Version
|
|
38
|
-
version: '
|
|
38
|
+
version: '1.6'
|
|
39
39
|
type: :development
|
|
40
40
|
prerelease: false
|
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
42
42
|
requirements:
|
|
43
|
-
- - "
|
|
43
|
+
- - "~>"
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: '
|
|
45
|
+
version: '1.6'
|
|
46
46
|
description: Fetching deep in a dense structure. A kind of bastard of JSONPath.
|
|
47
47
|
email:
|
|
48
48
|
- jmettraux+flor@gmail.com
|