modern 0.4.4 → 0.4.5

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: 98b75246df0cf5705be087b807c14450b9c91e663729df7d0886ba4428287348
4
- data.tar.gz: 59c973339a53b0d1d10157132cecbf5f46beb88901af2db6833f59ea19e4d6a3
3
+ metadata.gz: acd2d0084d17c885739efdb6c43b4bb92b063fcc97926797096f669f92e5ff62
4
+ data.tar.gz: 3108fb860bc3d119c66d7f86ec8e200e1c3f5be6abfe2ceeafa62ffc11fdbcf5
5
5
  SHA512:
6
- metadata.gz: 833d34b65a46ec471edbbc12ce949477bfeef93c80e04f15c53dec67600f60f7c77f7d375ceae70803c4f47a019301e35d4bccaf8adcbdfe69fc197a4f521422
7
- data.tar.gz: 53c57c0440bdbff95b26267124b95a6da80d75514eaa0bd2840bff93ff010b4152bc8c5c534b6ef4d829c6159adbbbe0d380a0f74278464be478979b3635595f
6
+ metadata.gz: 86f097562f5e6506f5ae6fb49261065d5a05120aafc0dfdcc3c996f7d14007a16eaabe34b753e09cfdef335cc752cd36e7bb6e888a7952c62533bcac6e1897c9
7
+ data.tar.gz: 82ab10dacaed0357ba80395a1ad0745085925a9cc4d0f010e1f081bedd8ae738710aebdfefb8ffd5a95c65177bb892023d230a4d3e8a9aa8c9d37f64abaea8de
@@ -31,12 +31,19 @@ module Modern
31
31
  ret = {}
32
32
  name_to_class = {}
33
33
 
34
- descriptor.root_schemas \
35
- .select { |type_or_structclass| type_or_structclass.is_a?(Class) } \
36
- .each do |structclass|
34
+ schema_entries =
35
+ descriptor.root_schemas.partition do |type_or_structclass|
36
+ type_or_structclass.is_a?(Class)
37
+ end
38
+
39
+ schema_entries.first.each do |structclass|
37
40
  _build_struct(ret, name_to_class, structclass)
38
41
  end
39
42
 
43
+ schema_entries.last.each do |dt|
44
+ _build_schema_value(ret, name_to_class, dt)
45
+ end
46
+
40
47
  ret
41
48
  end
42
49
 
@@ -84,11 +91,17 @@ module Modern
84
91
  if !registered_type.nil?
85
92
  registered_type
86
93
  elsif entry.is_a?(Class) && entry < Dry::Struct
94
+ _build_struct(ret, name_to_class, entry)
87
95
  _struct_ref(entry)
88
- elsif entry.is_a?(Dry::Types::Sum::Constrained)
96
+ elsif entry.is_a?(Dry::Types::Array::Member) && entry.options.key?(:member)
97
+ _build_schema_value(ret, name_to_class, entry.options[:member])
98
+ elsif entry.is_a?(Dry::Types::Sum)
89
99
  if entry.left.type.primitive == NilClass
90
100
  # it's a nullable field
91
101
  _build_schema_value(ret, name_to_class, entry.right).merge(nullable: true)
102
+ elsif entry.right.type.primitive == NilClass
103
+ # it's a backwards nullable field
104
+ _build_schema_value(ret, name_to_class, entry.left).merge(nullable: true)
92
105
  else
93
106
  {
94
107
  anyOf: _flatten_any_of(
@@ -108,6 +121,8 @@ module Modern
108
121
  elsif entry.is_a?(Dry::Types::Default) || entry.is_a?(Dry::Struct::Constructor) || entry.is_a?(Dry::Types::Constructor)
109
122
  # this just unwraps the underlying value
110
123
  _build_schema_value(ret, name_to_class, entry.type)
124
+ elsif entry.is_a?(Dry::Types::Enum)
125
+ _build_schema_value(ret, name_to_class, entry.type).merge(enum: entry.values)
111
126
  elsif entry.is_a?(Dry::Types::Definition)
112
127
  primitive = entry.primitive
113
128
 
@@ -122,9 +137,9 @@ module Modern
122
137
  _struct_ref(primitive)
123
138
  ]
124
139
  }
125
- elsif primitive < Hash
140
+ elsif primitive <= Hash
126
141
  _build_object_from_schema(ret, name_to_class, entry.member_types)
127
- elsif primitive < Array
142
+ elsif primitive <= Array
128
143
  {
129
144
  type: "array",
130
145
  items: _build_schema_value(ret, name_to_class, entry.member)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Modern
4
- VERSION = "0.4.4"
4
+ VERSION = "0.4.5"
5
5
  OPENAPI_VERSION = "3.0.1"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modern
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ed Ropple
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-23 00:00:00.000000000 Z
11
+ date: 2018-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler