deepmap 0.1.1 → 0.2.1

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/deepmap/deepmap.rb +21 -18
  3. data/readme.md +1 -0
  4. metadata +21 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c5229d6a8e3e1a646b0410fff9dc9d62d5103175
4
- data.tar.gz: 1d04fe9e69606c2b1a52ab8edce0b7fa48c9bf74
3
+ metadata.gz: 1245989b50aa651e1aa4b29a6f03f1ee61ba9122
4
+ data.tar.gz: ab4ad7b7c7474934558411dedfcc972883ccb4aa
5
5
  SHA512:
6
- metadata.gz: 9368c2fdaf84e2389c3cbd5eb74ba64e890613a79517c06fecf509ca7d11faa8c8d195526875d5979ad4967b9b02e377b4f6559fd56d44cc4754b9f0fb0fe101
7
- data.tar.gz: 6ec26424739f58685ff11a6d3510e2adb061b9a069ca21ff1cbec3260efe1a1c9bcc71ebdb9ee7c54caaaa903f2ead81381ad8b9c4eb61b0e94140a3ef6572f4
6
+ metadata.gz: 245795f12fcb97d4e9e754cd136b3bdcc45f22174d484e3189284d8dc6fdeb8f3d671f539793e874fe142a14786fc64775e7eb38417f19e36241aa352d992986
7
+ data.tar.gz: 51fad525dbec284057e03d60fabcee58c97a5f2be1d21ed31727e9df8c691fdec0eaf4bad116843b1239fb4dd178982588fbf1708dbdf094f8c17bf681b6f98e
@@ -3,20 +3,21 @@
3
3
  module DeepMap
4
4
  def deep_map
5
5
  return self if !block_given?
6
- recurse {|x| yield x}
6
+ recurse { |x| yield x }
7
7
  end
8
8
 
9
9
  def key_map
10
10
  return self if !block_given?
11
- recurse("key") {|x| yield x}
11
+ recurse("key") { |x| yield x }
12
12
  end
13
13
 
14
14
  def val_map
15
15
  return self if !block_given?
16
- recurse("val") {|x| yield x}
16
+ recurse("val") { |x| yield x }
17
17
  end
18
18
 
19
19
  private
20
+
20
21
  # Main recursive method. With the block passed in, keep recursing through the
21
22
  # object, applying the block to either each key or value (or both) depending
22
23
  # on the first caller of this method. This is the value stored in 't' type. If
@@ -24,30 +25,33 @@ module DeepMap
24
25
  # the key is an array, then map the recursive method over each item in the
25
26
  # array. If it is niether a hash or an array, then apply the block to that
26
27
  # item, and return the result.
27
- def recurse(t="both", h=self)
28
- if h.is_a?(Hash)
29
28
 
30
- Hash[ h.collect {|k, v|
31
- case t # type
32
- when "both", "key"
33
- [ yield(k), recurse(t, v) {|x| yield x } ]
34
- when "val"
35
- [ k, recurse(t, v) {|x| yield x} ]
36
- end
37
- }]
29
+ def recurse(t = "both", h = self)
30
+ if h.is_a?(Hash)
31
+ hash_collect(t, h) { |x| yield x }
38
32
 
39
33
  elsif h.is_a?(Array)
40
-
41
- h.map {|v| recurse(t, v) {|x| yield(x) } }
34
+ h.map { |v| recurse(t, v) { |x| yield x } }
42
35
 
43
36
  else # apply to value
44
-
45
37
  t == "key" ? h : yield(h)
46
38
 
47
39
  end
48
40
  end
49
- end
50
41
 
42
+ def hash_collect(t, h)
43
+ Hash[h.collect { |k, v|
44
+ case t # type
45
+ when "both", "key"
46
+ [yield(k), recurse(t, v) { |x| yield x }]
47
+
48
+ when "val"
49
+ [k, recurse(t, v) { |x| yield x }]
50
+
51
+ end
52
+ }]
53
+ end
54
+ end
51
55
 
52
56
  # Adding deep_map, key_map, val_map methods to Hash and Array classes.
53
57
 
@@ -58,4 +62,3 @@ end
58
62
  class Array
59
63
  include DeepMap
60
64
  end
61
-
data/readme.md CHANGED
@@ -4,6 +4,7 @@ deepmap
4
4
 
5
5
  [![Gem Version](https://badge.fury.io/rb/deepmap.svg)](https://badge.fury.io/rb/deepmap)
6
6
  [![Build Status](https://travis-ci.org/jeremywrnr/deepmap.svg?branch=master)](https://travis-ci.org/jeremywrnr/deepmap)
7
+ [![Code Climate](https://codeclimate.com/github/jeremywrnr/deepmap/badges/gpa.svg)](https://codeclimate.com/github/jeremywrnr/deepmap)
7
8
  [![MIT](https://img.shields.io/npm/l/alt.svg?style=flat)](http://jeremywrnr.com/mit-license)
8
9
 
9
10
 
metadata CHANGED
@@ -1,41 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deepmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.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-20 00:00:00.000000000 Z
11
+ date: 2018-03-06 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
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rufo
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  description: Map functions over nested hash/arrays objects (e.g. JSON).
@@ -66,9 +80,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
80
  version: '0'
67
81
  requirements: []
68
82
  rubyforge_project:
69
- rubygems_version: 2.5.1
83
+ rubygems_version: 2.6.14
70
84
  signing_key:
71
85
  specification_version: 4
72
86
  summary: Nested hash/array function mapping.
73
87
  test_files: []
74
- has_rdoc: