class Lutaml::Model::Schema::BaseSchema
def generate(klass, options = {})
def generate(klass, options = {}) schema = new( klass, schema: options[:schema], id: options[:id], title: options[:title], description: options[:description], ).generate_schema_hash format_schema(schema, options) end
def generate_definitions(klass)
def generate_definitions(klass) Generator::DefinitionsCollection.from_class(klass).to_schema end
def generate_polymorphic_definitions(attr)
def generate_polymorphic_definitions(attr) return {} unless polymorphic?(attr) attr.options[:polymorphic].each_with_object({}) do |child, result| result.merge!(generate_definitions(child)) end end
def generate_schema_hash
def generate_schema_hash { "$schema" => schema, "$id" => id, "description" => description, "$ref" => "#/$defs/#{klass.name.gsub('::', '_')}", "$defs" => generate_definitions(klass), }.compact end
def initialize(klass, schema:, id: nil, title: nil, description: nil)
def initialize(klass, schema:, id: nil, title: nil, description: nil) @schema = schema @klass = klass @id = id @title = title @description = description end
def polymorphic?(attr)
def polymorphic?(attr) Utils.present?(attr.options[:polymorphic]) end