Class: Jsapi::Meta::Schema::Object
- Defined in:
- lib/jsapi/meta/schema/object.rb
Constant Summary
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#add_property(name, keywords = {}) ⇒ Object
:nodoc:.
-
#all_of_references ⇒ Object
:attr: all_of_references.
-
#discriminator ⇒ Object
:attr: discriminator.
-
#model ⇒ Object
:attr: model The model class to access nested object parameters by.
-
#properties ⇒ Object
:attr: properties The properties.
- #resolve_properties(access, definitions) ⇒ Object
-
#to_json_schema ⇒ Object
:nodoc:.
-
#to_openapi(version) ⇒ Object
:nodoc:.
Methods inherited from Base
#default, #deprecated, #description, #enum, #enum=, #examples, #existence, #external_docs, #initialize, #nullable?, #title, #type
Methods inherited from Base
#initialize, #inspect, #reference?, #resolve
Methods included from Attributes::ClassMethods
Constructor Details
This class inherits a constructor from Jsapi::Meta::Schema::Base
Instance Method Details
#add_property(name, keywords = {}) ⇒ Object
:nodoc:
29 30 31 |
# File 'lib/jsapi/meta/schema/object.rb', line 29 def add_property(name, keywords = {}) # :nodoc: (@properties ||= {})[name.to_s] = Property.new(name, **keywords) end |
#all_of_references ⇒ Object
:attr: all_of_references
9 |
# File 'lib/jsapi/meta/schema/object.rb', line 9 attribute :all_of_references, [Reference], default: [] |
#discriminator ⇒ Object
:attr: discriminator
16 |
# File 'lib/jsapi/meta/schema/object.rb', line 16 attribute :discriminator, Discriminator |
#model ⇒ Object
:attr: model The model class to access nested object parameters by. The default model class is Model::Base.
22 |
# File 'lib/jsapi/meta/schema/object.rb', line 22 attribute :model, Class, default: Model::Base |
#properties ⇒ Object
:attr: properties The properties.
27 |
# File 'lib/jsapi/meta/schema/object.rb', line 27 attribute :properties, { String => Property }, writer: false, default: {} |
#resolve_properties(access, definitions) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/jsapi/meta/schema/object.rb', line 33 def resolve_properties(access, definitions) properties = merge_properties(definitions, []) case access when :read properties.reject { |_k, v| v.write_only? } when :write properties.reject { |_k, v| v.read_only? } else properties end end |
#to_json_schema ⇒ Object
:nodoc:
46 47 48 49 50 51 52 |
# File 'lib/jsapi/meta/schema/object.rb', line 46 def to_json_schema # :nodoc: super.merge( allOf: all_of_references.map(&:to_json_schema).presence, properties: properties.transform_values(&:to_json_schema), required: properties.values.select(&:required?).map(&:name) ).compact end |
#to_openapi(version) ⇒ Object
:nodoc:
54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/jsapi/meta/schema/object.rb', line 54 def to_openapi(version) # :nodoc: super.merge( allOf: all_of_references.map do |schema| schema.to_openapi(version) end.presence, discriminator: discriminator&.to_openapi(version), properties: properties.transform_values do |property| property.to_openapi(version) end, required: properties.values.select(&:required?).map(&:name) ).compact end |