dry-types-json-schema 0.0.3 → 0.0.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/dry-types-json-schema.gemspec +1 -1
- data/lib/dry/types/extensions/json_schema.rb +8 -4
- data/spec/extensions/json_schema_spec.rb +8 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67e63d34a8b81578fef86941bd3f448062ddf6357f5ea66751882f424a52bd28
|
4
|
+
data.tar.gz: 732938510bbdfa5490421cebfff6de06b57108819bdc0f7f7806f03ad4c8131b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0133a959fe532c4f5c75a5084c674a2e83553af6e6abb6580a1809fba8f5dd15c748640c786f4d22cd04a00303582ddc3ef957b707ec00d17281621bf4e6ad7
|
7
|
+
data.tar.gz: 05b90642aa10bce11add57b7591fa466a0102f9c5d62e4fa29b8a2f0a1318908d0a10baf9c36531fadf5584764d740b0beb3a7e21b540be63eb03a4b23f03ba0
|
data/Gemfile.lock
CHANGED
@@ -17,7 +17,7 @@ module Dry
|
|
17
17
|
IDENTITY = ->(v, _) { v }.freeze
|
18
18
|
INSPECT = ->(v, _) { v.inspect }.freeze
|
19
19
|
TO_INTEGER = ->(v, _) { v.to_i }.freeze
|
20
|
-
TO_ARRAY = ->(v, _) { v
|
20
|
+
TO_ARRAY = ->(v, _) { Array(v) }.freeze
|
21
21
|
TO_TYPE = ->(v, _) { CLASS_TO_TYPE.fetch(v.to_s.to_sym) }.freeze
|
22
22
|
|
23
23
|
# Metadata annotations and allowed types overrides for schema generation.
|
@@ -161,14 +161,18 @@ module Dry
|
|
161
161
|
|
162
162
|
definition.transform_values! { |v| v.call(type, ctx) }
|
163
163
|
|
164
|
-
return unless definition.any?
|
164
|
+
return unless definition.any?
|
165
165
|
|
166
166
|
if (extra = EXTRA_PROPS_FOR_TYPE[type.to_s.to_sym])
|
167
167
|
definition = definition.merge(extra)
|
168
168
|
end
|
169
169
|
|
170
|
-
|
171
|
-
|
170
|
+
if ctx.nil?
|
171
|
+
@keys.merge!(definition)
|
172
|
+
else
|
173
|
+
@keys[ctx] ||= {}
|
174
|
+
@keys[ctx].merge!(definition)
|
175
|
+
end
|
172
176
|
end
|
173
177
|
|
174
178
|
def visit_intersection(node, opts = EMPTY_HASH)
|
@@ -16,6 +16,14 @@ describe Dry::Types::JSONSchema do
|
|
16
16
|
{ type: :string, format: :email, title: title }
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
it_conforms_definition do
|
21
|
+
let(:type) { Dry::Types["string"].enum(*%w[a b]) }
|
22
|
+
|
23
|
+
let(:definition) do
|
24
|
+
{ type: :string, enum: %w[a b] }
|
25
|
+
end
|
26
|
+
end
|
19
27
|
end
|
20
28
|
|
21
29
|
describe "hash" do
|