k_util 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
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