43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/generative_ui/attributes.rb', line 43
def object_schema(description: nil, of: nil, &block)
return determine_object_reference(of, description) if of
sub_schema = Class.new(self)
result = sub_schema.class_eval(&block)
if result.is_a?(Hash) && result['$ref'] && sub_schema.properties.empty?
result.merge(description ? { description: description } : {})
elsif schema_class?(result) && sub_schema.properties.empty?
schema_class_to_inline_schema(result).merge(description ? { description: description } : {})
else
{
type: 'object',
properties: sub_schema.properties,
required: sub_schema.required_properties,
additionalProperties: sub_schema.additional_properties,
description: description
}.compact
end
end
|