k_util 0.0.8 → 0.0.9

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: c8615e74388467bff65c418f4367b9a6946ad9f1ed9dc7aaee45ccd81774a437
4
- data.tar.gz: 8c752c2c0210b4aea25afeb5a6d41847a138d11a2af5e16bcad0d8ea35499b5d
3
+ metadata.gz: 38fccd7c4b972bc1f8c1c6af03b5b956292890aee4ceacbd4a5144b09c6d3b51
4
+ data.tar.gz: e20b45b314fac1440757b526b14cf30d228173ddc89e328205a1bb66a22384dc
5
5
  SHA512:
6
- metadata.gz: ac0a9551cc6a4c8c463e0bdc8b4b209695d5d8a1fcfd7c633cdc33488725d81f9479f91e54ea3393d66312543135149a9838dce70eeb46943e1b868be564aa31
7
- data.tar.gz: 6512cfa298e0bf08f3b29776326dd8e8be3ebe8a0c3162c2be8764cf791748d5421ee4efd14606c65b8192351e3163a8249a610abd9481258744dae95e045d33
6
+ metadata.gz: 151a8e8a701153e448edddb7cd238512163e24f99690e2bae9717d2a388b5b181126f032352977a3c53468f181bb29cecb51dda836c1a4a608e968360c8d5f86
7
+ data.tar.gz: 69b14793219fc0e9327b9707bd1cc243959faefb2b7643bbe28dc9a0cf34bcf2ef85e1db6872fddc8ea2eeff0375da8296195a9def8094c875841d9dee976340
@@ -23,27 +23,31 @@ module KUtil
23
23
  end
24
24
  end
25
25
 
26
- # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
26
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
27
27
  def to_hash(data)
28
28
  # No test yet
29
29
  if data.is_a?(Array)
30
30
  return data.map { |v| v.is_a?(OpenStruct) ? to_hash(v) : v }
31
31
  end
32
32
 
33
+ return to_hash(data.to_h) if !data.is_a?(Hash) && data.respond_to?(:to_h)
34
+
33
35
  data.each_pair.with_object({}) do |(key, value), hash|
34
36
  case value
35
- when OpenStruct
37
+ when OpenStruct, Struct, Hash
36
38
  hash[key] = to_hash(value)
37
39
  when Array
38
40
  # No test yet
39
- values = value.map { |v| v.is_a?(OpenStruct) ? to_hash(v) : v }
41
+ values = value.map do |v|
42
+ v.is_a?(OpenStruct) || v.is_a?(Struct) || v.is_a?(Hash) ? struct_to_hash(v) : v
43
+ end
40
44
  hash[key] = values
41
45
  else
42
46
  hash[key] = value
43
47
  end
44
48
  end
45
49
  end
46
- # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
50
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
47
51
 
48
52
  def clean_symbol(value)
49
53
  return value if value.nil?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KUtil
4
- VERSION = '0.0.8'
4
+ VERSION = '0.0.9'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: k_util
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys