modern 0.4.4 → 0.4.5

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: 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