hash_kit 0.7.0 → 0.8.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: d485bd2d33cd889018f3f33be7b6f63c4b39950435c85d653a7e5bf83e5c7178
4
- data.tar.gz: 338476fcf2204466db3d9bf84bfe378c182dbcf3d36331051cce3365c5f12db0
3
+ metadata.gz: 800ee63416294dcbb04c587e92fa18c429158142d879eab17605f7670a049312
4
+ data.tar.gz: c05a36904c4ce5b25b697d39d7f8b9c4b1a48aa0f58774f285d47868db8fb472
5
5
  SHA512:
6
- metadata.gz: dd0d6f1890ff8578a3e46bc9da603efa1a1ca269da23163cbbb5f0b62b45543cd6cc7c34cb275f745a78f01a87b7d6976d24ac3c0767dd8a05b3066d04b05bff
7
- data.tar.gz: 4e9328fbfdbe271c9f437a6cbfcee49ca795d68bcc926b719ac8a4ac4be25e73f5693e30a635f3f141171889e7c7e1b1f6ead5bb8573b66e20650f86bc4c26f8
6
+ metadata.gz: cc70b56602354b5a11ea2911b6850d294dccfac134adfdbe3434069504cc9f8c986409ba6504e7c0075a9a16b5c83df648a24747b3c75e5e929b948b71889820
7
+ data.tar.gz: bf0295c52e8511367f0dd4c380dcebdf5194005268804599d83c1f426b6251f1ff23d2b35aba83ab2891430038b68c95b19e7ff9e0435dde89bb6d92d190b7ff
@@ -3,6 +3,20 @@
3
3
  module HashKit
4
4
  # Hash kit Helper class
5
5
  class Helper
6
+ INDIFFERENT_PROC = proc do |h, k|
7
+ case k
8
+ when Symbol
9
+ # Symbol#name returns a frozen string without allocating (Ruby 3.0+)
10
+ str = k.name
11
+ h[str] if h.key?(str)
12
+ when String
13
+ sym = k.to_sym
14
+ h[sym] if h.key?(sym)
15
+ else
16
+ h[k.to_s]
17
+ end
18
+ end
19
+
6
20
  # This method is called to make a hash allow indifferent access (it will
7
21
  # accept both strings & symbols for a valid key).
8
22
  def indifferent!(hash)
@@ -10,24 +24,15 @@ module HashKit
10
24
 
11
25
  # Set the default proc to allow the key to be either string or symbol if
12
26
  # a matching key is found.
13
- hash.default_proc = proc do |h, k|
14
- if h.key?(k.to_s)
15
- h[k.to_s]
16
- elsif h.key?(k.to_sym)
17
- h[k.to_sym]
18
- else
19
- nil
20
- end
21
- end
27
+ hash.default_proc = INDIFFERENT_PROC
22
28
 
23
29
  # Recursively process any child hashes
24
- hash.each do |key,value|
25
- unless hash[key].nil?
26
- if hash[key].is_a?(Hash)
27
- indifferent!(hash[key])
28
- elsif hash[key].is_a?(Array)
29
- indifferent_array!(hash[key])
30
- end
30
+ hash.each_value do |value|
31
+ case value
32
+ when Hash
33
+ indifferent!(value)
34
+ when Array
35
+ indifferent_array!(value)
31
36
  end
32
37
  end
33
38
 
@@ -38,9 +43,10 @@ module HashKit
38
43
  return unless array.is_a?(Array)
39
44
 
40
45
  array.each do |i|
41
- if i.is_a?(Hash)
46
+ case i
47
+ when Hash
42
48
  indifferent!(i)
43
- elsif i.is_a?(Array)
49
+ when Array
44
50
  indifferent_array!(i)
45
51
  end
46
52
  end
@@ -1,5 +1,5 @@
1
1
  # Namespace
2
2
  module HashKit
3
3
  # :nodoc:
4
- VERSION = '0.7.0'
4
+ VERSION = '0.8.0'
5
5
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hash_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sage One
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-28 00:00:00.000000000 Z
11
+ date: 2026-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: benchmark-ips
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -70,16 +84,16 @@ dependencies:
70
84
  name: simplecov
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: '0.21'
89
+ version: '0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - "~>"
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: '0.21'
96
+ version: '0'
83
97
  description: Toolkit for working with Hashes
84
98
  email:
85
99
  - vaughan.britton@sage.com
@@ -97,7 +111,7 @@ homepage: https://github.com/sage/hash_kit
97
111
  licenses:
98
112
  - MIT
99
113
  metadata: {}
100
- post_install_message:
114
+ post_install_message:
101
115
  rdoc_options: []
102
116
  require_paths:
103
117
  - lib
@@ -105,15 +119,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
119
  requirements:
106
120
  - - ">="
107
121
  - !ruby/object:Gem::Version
108
- version: '0'
122
+ version: 3.0.0
109
123
  required_rubygems_version: !ruby/object:Gem::Requirement
110
124
  requirements:
111
125
  - - ">="
112
126
  - !ruby/object:Gem::Version
113
127
  version: '0'
114
128
  requirements: []
115
- rubygems_version: 3.3.5
116
- signing_key:
129
+ rubygems_version: 3.4.20
130
+ signing_key:
117
131
  specification_version: 4
118
132
  summary: Toolkit for working with Hashes
119
133
  test_files: []