Class: OmniAI::Schema::Object
- Inherits:
-
Base
- Object
- Base
- OmniAI::Schema::Object
show all
- Defined in:
- lib/omniai/schema/object.rb
Overview
Constant Summary
collapse
- TYPE =
"object"
Instance Attribute Summary collapse
Attributes inherited from Base
#description, #title
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
#nonnullable, #nullable, #nullable?
Constructor Details
#initialize(title: nil, description: nil, properties: {}, required: [], nullable: nil) ⇒ Object
Returns a new instance of Object.
31
32
33
34
35
|
# File 'lib/omniai/schema/object.rb', line 31
def initialize(title: nil, description: nil, properties: {}, required: [], nullable: nil)
super(title:, description:, nullable:)
@properties = properties
@required = required
end
|
Instance Attribute Details
#properties ⇒ Hash
20
21
22
|
# File 'lib/omniai/schema/object.rb', line 20
def properties
@properties
end
|
#required ⇒ Array<String>
24
25
26
|
# File 'lib/omniai/schema/object.rb', line 24
def required
@required
end
|
Class Method Details
89
90
91
92
93
94
95
96
97
|
# File 'lib/omniai/schema/object.rb', line 89
def self.deserialize(data)
nullable = Array(data["type"] || data[:type]).include?("null")
title = data["title"] || data[:title]
description = data["description"] || data[:description]
properties = (data["properties"] || data[:properties]).transform_values { |i| OmniAI::Schema.deserialize(i) }
required = data["required"] || data[:required] || []
new(title:, description:, properties:, required:, nullable:)
end
|
Instance Method Details
38
39
40
41
42
43
44
45
46
|
# File 'lib/omniai/schema/object.rb', line 38
def dup
self.class.new(
title: @title,
description: @description,
properties: @properties.dup,
required: @required.dup,
nullable: @nullable
)
end
|
#parse(data) ⇒ Hash
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/omniai/schema/object.rb', line 51
def parse(data)
return if data.nil? && nullable?
result = {}
@properties.each do |name, property|
value = data[String(name)]
result[name.intern] = property.parse(value) unless value.nil?
end
result
end
|
#serialize(additional_properties: false) ⇒ Hash
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/omniai/schema/object.rb', line 66
def serialize(additional_properties: false)
{
type: nullify(TYPE),
title: @title,
description: @description,
properties: @properties.transform_values { |value| value.serialize(additional_properties:) },
required: @required,
additionalProperties: additional_properties,
}.compact
end
|