dry-types-json-schema 0.0.3 → 0.0.4

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: b3c596c245aad8cb72bc10fbe904078ac01c7522d14c135b4a6645a7b7f5c769
4
- data.tar.gz: 5fc2b32368fdcb1135b32fdb7d3db27c2104966ff371f020eea750df08588b4f
3
+ metadata.gz: 67e63d34a8b81578fef86941bd3f448062ddf6357f5ea66751882f424a52bd28
4
+ data.tar.gz: 732938510bbdfa5490421cebfff6de06b57108819bdc0f7f7806f03ad4c8131b
5
5
  SHA512:
6
- metadata.gz: 50ed4c3ca20040b4d88ae5ecf107c6ccfad7ae7242a724f1c3afd9f015f63a7b203966571af8699614881f7848a657d322554bbb541ff48244194662a73c40e1
7
- data.tar.gz: 4810a8578cfecb91df93f66b4a9ad6748db42ef0ebd219c1dfce4eeb52c9fd6992027925579dea2f545b57b38f851eca600ef1eb898ba0a5f114e8d42c14537f
6
+ metadata.gz: a0133a959fe532c4f5c75a5084c674a2e83553af6e6abb6580a1809fba8f5dd15c748640c786f4d22cd04a00303582ddc3ef957b707ec00d17281621bf4e6ad7
7
+ data.tar.gz: 05b90642aa10bce11add57b7591fa466a0102f9c5d62e4fa29b8a2f0a1318908d0a10baf9c36531fadf5584764d740b0beb3a7e21b540be63eb03a4b23f03ba0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dry-types-json-schema (0.0.3)
4
+ dry-types-json-schema (0.0.4)
5
5
  dry-types (~> 1.7.2)
6
6
 
7
7
  GEM
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "dry-types-json-schema"
5
- s.version = "0.0.3"
5
+ s.version = "0.0.4"
6
6
  s.summary = "Generate JSON Schema from dry-types"
7
7
  s.authors = ["elcuervo"]
8
8
  s.licenses = %w[MIT]
@@ -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.to_a }.freeze
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? && ctx
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
- @keys[ctx] ||= {}
171
- @keys[ctx].merge!(definition)
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-types-json-schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - elcuervo