deepmap 0.1 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/readme.md +24 -2
- metadata +8 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5229d6a8e3e1a646b0410fff9dc9d62d5103175
|
4
|
+
data.tar.gz: 1d04fe9e69606c2b1a52ab8edce0b7fa48c9bf74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9368c2fdaf84e2389c3cbd5eb74ba64e890613a79517c06fecf509ca7d11faa8c8d195526875d5979ad4967b9b02e377b4f6559fd56d44cc4754b9f0fb0fe101
|
7
|
+
data.tar.gz: 6ec26424739f58685ff11a6d3510e2adb061b9a069ca21ff1cbec3260efe1a1c9bcc71ebdb9ee7c54caaaa903f2ead81381ad8b9c4eb61b0e94140a3ef6572f4
|
data/readme.md
CHANGED
@@ -30,18 +30,37 @@ needs to be passed in as a block (see usage).
|
|
30
30
|
```ruby
|
31
31
|
irb(main):001:0> require 'deepmap'
|
32
32
|
=> true
|
33
|
+
|
33
34
|
irb(main):002:0> test = { 1 => 4, 2 => [5, 6], 3 => { 4 => [1, 2, { 5 => 10 }] } }
|
34
35
|
=> {1=>4, 2=>[5, 6], 3=>{4=>[1, 2, {5=>10}]}}
|
36
|
+
|
35
37
|
irb(main):003:0> test.deep_map {|i| i.to_i * 2 }
|
36
38
|
=> {2=>8, 4=>[10, 12], 6=>{8=>[2, 4, {10=>20}]}}
|
39
|
+
|
37
40
|
irb(main):004:0> test.key_map {|i| i.to_i * 2 }
|
38
41
|
=> {2=>4, 4=>[5, 6], 6=>{8=>[1, 2, {10=>10}]}}
|
42
|
+
|
39
43
|
irb(main):005:0> test.val_map {|i| i.to_i * 2 }
|
40
44
|
=> {1=>8, 2=>[10, 12], 3=>{4=>[2, 4, {5=>20}]}}
|
41
45
|
```
|
42
46
|
|
43
47
|
Once you `require 'deepmap'`, you can call any of the three provided functions
|
44
|
-
on any (existing or new!) hash or array, as demonstrated above.
|
48
|
+
on any (existing or new!) hash or array, as demonstrated above. You can also
|
49
|
+
use the (&:method) shortcut to call a method on each object concisely:
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
irb(main):002:0> test = { 'a' => 'b', 'c' => ['d', 'e'], 'f' => { 'g' => ['h', 'i', { 'j' => 'k' }] } }
|
53
|
+
=> {"a"=>"b", "c"=>["d", "e"], "f"=>{"g"=>["h", "i", {"j"=>"k"}]}}
|
54
|
+
|
55
|
+
irb(main):003:0> test.deep_map(&:upcase)
|
56
|
+
=> {"A"=>"B", "C"=>["D", "E"], "F"=>{"G"=>["H", "I", {"J"=>"K"}]}}
|
57
|
+
|
58
|
+
irb(main):004:0> test.key_map(&:upcase)
|
59
|
+
=> {"A"=>"b", "C"=>["d", "e"], "F"=>{"G"=>["h", "i", {"J"=>"k"}]}}
|
60
|
+
|
61
|
+
irb(main):005:0> test.val_map(&:upcase)
|
62
|
+
=> {"a"=>"B", "c"=>["D", "E"], "f"=>{"g"=>["H", "I", {"j"=>"K"}]}}
|
63
|
+
```
|
45
64
|
|
46
65
|
|
47
66
|
## development / testing
|
@@ -68,5 +87,8 @@ This uses `rspec` and `rake` to run a suite of unit tests. To run the suite:
|
|
68
87
|
|
69
88
|
## todo
|
70
89
|
|
71
|
-
- support
|
90
|
+
- support key-val iteration in mapping over vals/keys. This would allow support
|
91
|
+
for mapping conditionally based on a key/value, even if you are iterating
|
92
|
+
over all values/keys (`key_map {|k, v| k > 0 ? k : v }`).
|
93
|
+
|
72
94
|
|
metadata
CHANGED
@@ -1,45 +1,44 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deepmap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Warner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
description:
|
42
|
-
JSON)
|
41
|
+
description: Map functions over nested hash/arrays objects (e.g. JSON).
|
43
42
|
email: jeremywrnr@gmail.com
|
44
43
|
executables: []
|
45
44
|
extensions: []
|
@@ -70,6 +69,6 @@ rubyforge_project:
|
|
70
69
|
rubygems_version: 2.5.1
|
71
70
|
signing_key:
|
72
71
|
specification_version: 4
|
73
|
-
summary:
|
72
|
+
summary: Nested hash/array function mapping.
|
74
73
|
test_files: []
|
75
74
|
has_rdoc:
|