deepmap 0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/readme.md +24 -2
  3. metadata +8 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c947c80cc87828eea108ac893fbd9c789bc146d6
4
- data.tar.gz: da3b2cfa43370a8f518246c2e36b54039400c3e2
3
+ metadata.gz: c5229d6a8e3e1a646b0410fff9dc9d62d5103175
4
+ data.tar.gz: 1d04fe9e69606c2b1a52ab8edce0b7fa48c9bf74
5
5
  SHA512:
6
- metadata.gz: 0f9d0268d5acd36c6534146066eb5b3bebaf37032b89ea89cd69b748a42868473f10b8ce4b277517d70e525b662fdbf112ab052715066dec7160a7bab6cd5a1e
7
- data.tar.gz: 9763f5bb31035ae8814ad8a22e14b937e6340d691d45a4939eb85085419951a62c0ecfedfc0c3709c36bc8199b2dc53eeec7649fe18b80dcc3876ab8b1ea4685
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 better object mapping, like `#deep_map(:method) => #deep_map {|x| x.method }`
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: '0.1'
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-19 00:00:00.000000000 Z
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: easily map functions over key/vals of nested hash/arrays objects (eg
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: nested hash/arrap function mapping
72
+ summary: Nested hash/array function mapping.
74
73
  test_files: []
75
74
  has_rdoc: