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 +4 -4
- data/Gemfile.lock +1 -1
- data/kube_schema.gemspec +3 -3
- data/lib/kube/schema/version.rb +1 -1
- data/lib/kube/schema.rb +48 -0
- metadata +7 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1e976c18b750dcd4d44e497ac2968f0cbc8c4e486fb17e16eb13a75e2763da82
|
|
4
|
+
data.tar.gz: 871835b2346e8cdb3bc716d6fb9d3d33d904b688f6ae0bb1f51403f4f4161691
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f8180084aa73210782bd2767017b251c05641e0b0eab6f1799ada712dc7a6ca82d33e5312446f6fbdac66d33f8d3f98a6f641b111ad967cc57082b5d98366486
|
|
7
|
+
data.tar.gz: f59b9ba8362aedd2448c70645ffe0778dc2428f8bf084ad038a29d802125beee6c6bc594e5ff53eab795786ea81c831f61e790a035eba39e9f687c3eb0b196a1
|
data/Gemfile.lock
CHANGED
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
|
data/lib/kube/schema/version.rb
CHANGED
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.
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|