kube_schema 1.2.2 → 1.2.4

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: 43157c3d38782006f39aa63c3cc0ae83eb4af0ad3f3974dde30d4ce27aa58a0d
4
- data.tar.gz: 510e764c90294d6c351c66930b95a056cbdbd7ac0a6f2d88bed0bb7ef374cc76
3
+ metadata.gz: 1e976c18b750dcd4d44e497ac2968f0cbc8c4e486fb17e16eb13a75e2763da82
4
+ data.tar.gz: 871835b2346e8cdb3bc716d6fb9d3d33d904b688f6ae0bb1f51403f4f4161691
5
5
  SHA512:
6
- metadata.gz: d38e9e7e866071935b86fd788f8f52f0c751e5b2e71341f3509999cf0beefb193cfa04c92a03f2434865c6bb7771c8348f816b5bc25fd7506c7eb00759fccba3
7
- data.tar.gz: 6bdab5c5a67196f998e0c8e527964c9921f8cdfc931742fe9a924cf82b4e31c5a54236c22a4bd5c8fe261310affc2cba813a56f248ab38ed6903e5e5bd300056
6
+ metadata.gz: f8180084aa73210782bd2767017b251c05641e0b0eab6f1799ada712dc7a6ca82d33e5312446f6fbdac66d33f8d3f98a6f641b111ad967cc57082b5d98366486
7
+ data.tar.gz: f59b9ba8362aedd2448c70645ffe0778dc2428f8bf084ad038a29d802125beee6c6bc594e5ff53eab795786ea81c831f61e790a035eba39e9f687c3eb0b196a1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kube_schema (1.2.1)
4
+ kube_schema (1.2.3)
5
5
  black_hole_struct (~> 0.1)
6
6
  json_schemer (~> 2.5)
7
7
  rubyshell (~> 1.5)
data/kube_schema.gemspec CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "rake", "~> 13.0"
33
33
  spec.add_development_dependency "rubocop", "~> 1.21"
34
34
 
35
- spec.add_dependency "rubyshell", "~> 1.5"
36
- spec.add_dependency "json_schemer", "~> 2.5"
37
- spec.add_dependency "black_hole_struct", "~> 0.1"
35
+ spec.add_dependency "rubyshell", "~> 1.5.0"
36
+ spec.add_dependency "json_schemer", "~> 2.5.0"
37
+ spec.add_dependency "black_hole_struct", "~> 0.1.0"
38
38
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kube
4
4
  module Schema
5
- VERSION = "1.2.2"
5
+ VERSION = "1.2.4"
6
6
  end
7
7
  end
data/lib/kube/schema.rb CHANGED
@@ -75,3 +75,51 @@ module Kube
75
75
  end
76
76
  end
77
77
  end
78
+
79
+ # Patch BlackHoleStruct to handle arrays consistently.
80
+ #
81
+ # The upstream gem does not recurse into arrays — hashes inside arrays
82
+ # are not converted to BlackHoleStruct on construction, and are not
83
+ # converted back to plain Hash on #to_h. This causes key-type
84
+ # inconsistencies after a Resource round-trip (symbol keys become
85
+ # string keys inside arrays).
86
+ #
87
+ # These two patches fix both directions:
88
+ # initialize — converts hashes inside arrays to BlackHoleStruct
89
+ # to_h — converts BlackHoleStruct/arrays back to plain objects
90
+ class BlackHoleStruct
91
+ def initialize(hash = {})
92
+ raise ArgumentError, "Argument should be a Hash" unless hash.is_a?(Hash)
93
+
94
+ @table = {}
95
+ hash.each do |key, value|
96
+ @table[key.to_sym] = deep_wrap(value)
97
+ end
98
+ end
99
+
100
+ def to_h
101
+ hash = {}
102
+ @table.each do |key, value|
103
+ hash[key] = deep_unwrap(value)
104
+ end
105
+ hash
106
+ end
107
+
108
+ private
109
+
110
+ def deep_wrap(value)
111
+ case value
112
+ when Hash then self.class.new(value)
113
+ when Array then value.map { |v| deep_wrap(v) }
114
+ else value
115
+ end
116
+ end
117
+
118
+ def deep_unwrap(value)
119
+ case value
120
+ when self.class then value.to_h
121
+ when Array then value.map { |v| deep_unwrap(v) }
122
+ else value
123
+ end
124
+ end
125
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kube_schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan K
@@ -57,42 +57,42 @@ dependencies:
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '1.5'
60
+ version: 1.5.0
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '1.5'
67
+ version: 1.5.0
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: json_schemer
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '2.5'
74
+ version: 2.5.0
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '2.5'
81
+ version: 2.5.0
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: black_hole_struct
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '0.1'
88
+ version: 0.1.0
89
89
  type: :runtime
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0.1'
95
+ version: 0.1.0
96
96
  description: 'Abstractions are God. Let''s give praise and build on the shoulders
97
97
  of giants by using objects to represent schemas. It was written and to it became.
98
98