class Lutaml::Model::Schema::XmlCompiler::ComplexType
def <<(instance)
def <<(instance) return if instance.nil? @instances << instance end
def base_class_name
def base_class_name case base_class when SERIALIZABLE_BASE_CLASS SERIALIZABLE_BASE_CLASS else Utils.camel_case(last_of_split(base_class)) end end
def base_class_require
def base_class_require case base_class when SERIALIZABLE_BASE_CLASS "require \"lutaml/model\"" else "require_relative \"#{Utils.snake_case(last_of_split(base_class))}\"" end end
def extended_indent
def extended_indent @indent * 2 end
def initialize(base_class: SERIALIZABLE_BASE_CLASS)
def initialize(base_class: SERIALIZABLE_BASE_CLASS) @base_class = base_class @instances = [] end
def last_of_split(field)
def last_of_split(field) field&.split(":")&.last end
def namespace_and_prefix
def namespace_and_prefix return "" if Utils.blank?(@namespace) && Utils.blank?(@prefix) [namespace_option, @prefix&.inspect].compact.join(", ") end
def namespace_option
def namespace_option "#{extended_indent}namespace #{@namespace.inspect}" end
def required_files
def required_files files = [base_class_require] files.concat(@instances.map(&:required_files).flatten.compact.uniq) files.concat(simple_content.required_files) if simple_content? files end
def root_options
def root_options return "" unless mixed ", mixed: true" end
def setup_options(options)
def setup_options(options) @namespace, @prefix = options.values_at(:namespace, :prefix) @indent = " " * options&.fetch(:indent, 2) end
def simple_content?
def simple_content? Utils.present?(@simple_content) end
def simple_content_attribute
def simple_content_attribute SIMPLE_CONTENT_ATTRIBUTE_TEMPLATE.result(binding) if simple_content? || mixed end
def simple_content_type
def simple_content_type return "string" unless simple_content? Utils.snake_case(last_of_split(simple_content.base_class)) end
def to_class(options: {})
def to_class(options: {}) setup_options(options) TEMPLATE.result(binding) end