deepmap 0.2.3 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2e4adeb8dab4e842316ce016e9a4f068e09279391a786710d458f44c457b5104
4
- data.tar.gz: 31c668de570218bc4e6a8bc9f16451bdb24a35295168e7e5d48eeab24bbd0cb3
3
+ metadata.gz: e83602369521a1799962c9cba500b4f4a5c0d16a16555a7738c5de3687c5b7c5
4
+ data.tar.gz: a58bdf656de275c1957c6e9a42fbc4399f1480e84129f112c1cb554f8a407823
5
5
  SHA512:
6
- metadata.gz: f7272c097be04fd52c017e25bd9079e8d8ec6f3e1dd25d592a7f214630bc41d3d1309fd9150c55997e7d1379caac9467efb9cf342e9efeeff554c46380f2e2b1
7
- data.tar.gz: ac955004b42234b87f6b7bbbc292f6ff145d169772a56b29b6d365f391aa735ca68d484bc8dcd202ba19776f149bb05b4f849823e2f3c3fa8916d6923d269bf9
6
+ metadata.gz: 4f6c34154cef76baca26ae3bd24bda7badc8063e865ac190bba8340c42757914dffc2aec4bd78b84132910a466131854641101576bfba8d08a648f7f474519ae
7
+ data.tar.gz: 91b53fcda525ab6e2cc6915de7964471d6a16e8b1e0c6b3a9a46ce57dc7ec82daeb731a19ea42b4e8517dbf21dd7f7e41bfe66a4e0eb29a04470663572556318
@@ -1,19 +1,23 @@
1
- # Creating deep_map, key_map, val_map methods in DeepMap.
1
+ # frozen_string_literal: true
2
2
 
3
+ # Creating deep_map, key_map, val_map methods in DeepMap.
3
4
  module DeepMap
4
- def deep_map
5
- return self if !block_given?
6
- recurse { |x| yield x }
5
+ def deep_map(&)
6
+ return self unless block_given?
7
+
8
+ recurse(&)
7
9
  end
8
10
 
9
- def key_map
10
- return self if !block_given?
11
- recurse("key") { |x| yield x }
11
+ def key_map(&)
12
+ return self unless block_given?
13
+
14
+ recurse('key', &)
12
15
  end
13
16
 
14
- def val_map
15
- return self if !block_given?
16
- recurse("val") { |x| yield x }
17
+ def val_map(&)
18
+ return self unless block_given?
19
+
20
+ recurse('val', &)
17
21
  end
18
22
 
19
23
  private
@@ -26,30 +30,31 @@ module DeepMap
26
30
  # array. If it is niether a hash or an array, then apply the block to that
27
31
  # item, and return the result.
28
32
 
29
- def recurse(t = "both", h = self)
30
- if h.is_a?(Hash)
31
- hash_collect(t, h) { |x| yield x }
33
+ def recurse(t = 'both', h = self, &block)
34
+ case h
35
+ when Hash
36
+ hash_collect(t, h, &block)
32
37
 
33
- elsif h.is_a?(Array)
34
- h.map { |v| recurse(t, v) { |x| yield x } }
38
+ when Array
39
+ h.map { |v| recurse(t, v, &block) }
35
40
 
36
41
  else # apply to value
37
- t == "key" ? h : yield(h)
42
+ t == 'key' ? h : yield(h)
38
43
 
39
44
  end
40
45
  end
41
46
 
42
- def hash_collect(t, h)
43
- Hash[h.collect { |k, v|
47
+ def hash_collect(t, h, &block)
48
+ h.to_h do |k, v|
44
49
  case t # type
45
- when "both", "key"
46
- [yield(k), recurse(t, v) { |x| yield x }]
50
+ when 'both', 'key'
51
+ [yield(k), recurse(t, v, &block)]
47
52
 
48
- when "val"
49
- [k, recurse(t, v) { |x| yield x }]
53
+ when 'val'
54
+ [k, recurse(t, v, &block)]
50
55
 
51
56
  end
52
- }]
57
+ end
53
58
  end
54
59
  end
55
60
 
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DeepMap
4
+ VERSION = '1.0.0'
5
+ end
data/readme.md CHANGED
@@ -72,11 +72,12 @@ try running `gem install bundler`. Once that is done:
72
72
  Now, we should be able to build the gem locally. This will build the local
73
73
  deepmap gem and link it in your path, so you can playing around with `deepmap`.
74
74
 
75
- bundle exec rake build
75
+ just build
76
76
 
77
- This uses `rspec` and `rake` to run a suite of unit tests. To run the suite:
77
+ This uses `rspec`, `rubocop`, and `simplecov` to run and check a suite of unit
78
+ tests. To run the full suite:
78
79
 
79
- bundle exec rake
80
+ just ci
80
81
 
81
82
  ## todo
82
83
 
metadata CHANGED
@@ -1,57 +1,62 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deepmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Warner
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-03-09 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: rspec
13
+ name: colored
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - ">="
16
+ - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: 3.8.0
18
+ version: '1.2'
20
19
  type: :development
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - ">="
23
+ - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: 3.8.0
25
+ version: '1.2'
27
26
  - !ruby/object:Gem::Dependency
28
- name: rake
27
+ name: rspec
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '3.8'
31
33
  - - ">="
32
34
  - !ruby/object:Gem::Version
33
- version: 12.3.3
35
+ version: 3.8.0
34
36
  type: :development
35
37
  prerelease: false
36
38
  version_requirements: !ruby/object:Gem::Requirement
37
39
  requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '3.8'
38
43
  - - ">="
39
44
  - !ruby/object:Gem::Version
40
- version: 12.3.3
45
+ version: 3.8.0
41
46
  - !ruby/object:Gem::Dependency
42
- name: rufo
47
+ name: simplecov
43
48
  requirement: !ruby/object:Gem::Requirement
44
49
  requirements:
45
- - - ">="
50
+ - - "~>"
46
51
  - !ruby/object:Gem::Version
47
- version: 0.15.1
52
+ version: 0.22.0
48
53
  type: :development
49
54
  prerelease: false
50
55
  version_requirements: !ruby/object:Gem::Requirement
51
56
  requirements:
52
- - - ">="
57
+ - - "~>"
53
58
  - !ruby/object:Gem::Version
54
- version: 0.15.1
59
+ version: 0.22.0
55
60
  description: Map functions over nested hash/arrays objects (e.g., YAML, JSON).
56
61
  email: jeremywrnr@gmail.com
57
62
  executables: []
@@ -59,12 +64,12 @@ extensions: []
59
64
  extra_rdoc_files: []
60
65
  files:
61
66
  - lib/deepmap/deepmap.rb
67
+ - lib/deepmap/version.rb
62
68
  - readme.md
63
69
  homepage: http://github.com/jeremywrnr/deepmap
64
70
  licenses:
65
71
  - MIT
66
72
  metadata: {}
67
- post_install_message:
68
73
  rdoc_options: []
69
74
  require_paths:
70
75
  - lib/deepmap
@@ -72,15 +77,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
72
77
  requirements:
73
78
  - - ">="
74
79
  - !ruby/object:Gem::Version
75
- version: '0'
80
+ version: '3.0'
76
81
  required_rubygems_version: !ruby/object:Gem::Requirement
77
82
  requirements:
78
83
  - - ">="
79
84
  - !ruby/object:Gem::Version
80
85
  version: '0'
81
86
  requirements: []
82
- rubygems_version: 3.3.7
83
- signing_key:
87
+ rubygems_version: 4.0.10
84
88
  specification_version: 4
85
89
  summary: Nested hash/array function mapping.
86
90
  test_files: []