Class: OmniAI::Schema::Object
- Inherits:
-
Object
- Object
- OmniAI::Schema::Object
- Defined in:
- lib/omniai/schema/object.rb
Overview
Constant Summary collapse
- TYPE =
"object"
Instance Attribute Summary collapse
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(title: nil, description: nil, properties: {}, required: []) ⇒ Object
constructor
A new instance of Object.
- #parse(data) ⇒ Hash
- #property(name) ⇒ Object
- #serialize ⇒ Hash
Constructor Details
#initialize(title: nil, description: nil, properties: {}, required: []) ⇒ Object
Returns a new instance of Object.
59 60 61 62 63 64 65 |
# File 'lib/omniai/schema/object.rb', line 59 def initialize(title: nil, description: nil, properties: {}, required: []) super() @title = title @description = description @properties = properties @required = required end |
Instance Attribute Details
#description ⇒ String?
32 33 34 |
# File 'lib/omniai/schema/object.rb', line 32 def description @description end |
#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 |
#title ⇒ String?
28 29 30 |
# File 'lib/omniai/schema/object.rb', line 28 def title @title end |
Class Method Details
.deserialize(data) ⇒ OmniAI::Schema::Object
46 47 48 49 50 51 52 53 |
# File 'lib/omniai/schema/object.rb', line 46 def self.deserialize(data) 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:) end |
Instance Method Details
#parse(data) ⇒ Hash
86 87 88 89 90 91 92 93 |
# File 'lib/omniai/schema/object.rb', line 86 def parse(data) result = {} @properties.each do |name, property| value = data[String(name)] result[name.intern] = property.parse(value) unless value.nil? end result end |
#property(name) ⇒ Object
79 80 81 |
# File 'lib/omniai/schema/object.rb', line 79 def property(name, ...) @properties[name] = OmniAI::Schema::Scalar.build(...) end |
#serialize ⇒ Hash
68 69 70 71 72 73 74 75 76 |
# File 'lib/omniai/schema/object.rb', line 68 def serialize { type: TYPE, title: @title, description: @description, properties: @properties.transform_values(&:serialize), required: @required, }.compact end |