deepmap 0.2.4 → 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: b4cf7c264a6edf69602a9ae213c0f039b4c819160c4661bdfe376512f58a971b
4
- data.tar.gz: d321c60e683abeb46d3d72aef3511df43fe243e4664ddbc5dc5ddfbbacfa8d7e
3
+ metadata.gz: e83602369521a1799962c9cba500b4f4a5c0d16a16555a7738c5de3687c5b7c5
4
+ data.tar.gz: a58bdf656de275c1957c6e9a42fbc4399f1480e84129f112c1cb554f8a407823
5
5
  SHA512:
6
- metadata.gz: 90caafddebe9ce0e01df2524c7485dbf9071de1c9224cf3b9422a6a510c3364c0a5a94315c235d5f2d699e429df934b83adbd8419ae24bbc99d3e640919a100f
7
- data.tar.gz: c09f6ed63e01037c3433dced30f3ad5d447cd6b72018526b9bfb149571cbec26459a43385a4931d68fca6488c071051c72b1d662038d71184dfdda5a970efc90
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,75 +1,62 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deepmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
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'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 3.8.0
18
+ version: '1.2'
23
19
  type: :development
24
20
  prerelease: false
25
21
  version_requirements: !ruby/object:Gem::Requirement
26
22
  requirements:
27
23
  - - "~>"
28
24
  - !ruby/object:Gem::Version
29
- version: '3.8'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 3.8.0
25
+ version: '1.2'
33
26
  - !ruby/object:Gem::Dependency
34
- name: rake
27
+ name: rspec
35
28
  requirement: !ruby/object:Gem::Requirement
36
29
  requirements:
37
30
  - - "~>"
38
31
  - !ruby/object:Gem::Version
39
- version: '12.3'
32
+ version: '3.8'
40
33
  - - ">="
41
34
  - !ruby/object:Gem::Version
42
- version: 12.3.3
35
+ version: 3.8.0
43
36
  type: :development
44
37
  prerelease: false
45
38
  version_requirements: !ruby/object:Gem::Requirement
46
39
  requirements:
47
40
  - - "~>"
48
41
  - !ruby/object:Gem::Version
49
- version: '12.3'
42
+ version: '3.8'
50
43
  - - ">="
51
44
  - !ruby/object:Gem::Version
52
- version: 12.3.3
45
+ version: 3.8.0
53
46
  - !ruby/object:Gem::Dependency
54
- name: rufo
47
+ name: simplecov
55
48
  requirement: !ruby/object:Gem::Requirement
56
49
  requirements:
57
50
  - - "~>"
58
51
  - !ruby/object:Gem::Version
59
- version: '0.15'
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: 0.15.1
52
+ version: 0.22.0
63
53
  type: :development
64
54
  prerelease: false
65
55
  version_requirements: !ruby/object:Gem::Requirement
66
56
  requirements:
67
57
  - - "~>"
68
58
  - !ruby/object:Gem::Version
69
- version: '0.15'
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- version: 0.15.1
59
+ version: 0.22.0
73
60
  description: Map functions over nested hash/arrays objects (e.g., YAML, JSON).
74
61
  email: jeremywrnr@gmail.com
75
62
  executables: []
@@ -77,12 +64,12 @@ extensions: []
77
64
  extra_rdoc_files: []
78
65
  files:
79
66
  - lib/deepmap/deepmap.rb
67
+ - lib/deepmap/version.rb
80
68
  - readme.md
81
69
  homepage: http://github.com/jeremywrnr/deepmap
82
70
  licenses:
83
71
  - MIT
84
72
  metadata: {}
85
- post_install_message:
86
73
  rdoc_options: []
87
74
  require_paths:
88
75
  - lib/deepmap
@@ -90,15 +77,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
77
  requirements:
91
78
  - - ">="
92
79
  - !ruby/object:Gem::Version
93
- version: '0'
80
+ version: '3.0'
94
81
  required_rubygems_version: !ruby/object:Gem::Requirement
95
82
  requirements:
96
83
  - - ">="
97
84
  - !ruby/object:Gem::Version
98
85
  version: '0'
99
86
  requirements: []
100
- rubygems_version: 3.3.7
101
- signing_key:
87
+ rubygems_version: 4.0.10
102
88
  specification_version: 4
103
89
  summary: Nested hash/array function mapping.
104
90
  test_files: []