module Lutaml::Model::Config

def adapter_for(format)

def adapter_for(format)
  @adapters[format]
end

def class_for(adapter, type)

def class_for(adapter, type)
  # TODO: Remove once HashAdapter namespace is renamed to Hash
  adapter = "hash_adapter" if adapter == "hash"
  Lutaml::Model.const_get(to_class_name(adapter))
    .const_get(to_class_name(type))
end

def configure

def configure
  yield self
  self
end

def default_register

def default_register
  @default_register ||= :default
end

def default_register=(value)

def default_register=(value)
  @default_register = case value
                      when Symbol then value
                      when Lutaml::Model::Register then value.id
                      else
                        raise "Unknown register: #{value}, expected a Symbol or a Lutaml::Model::Register instance"
                      end
end

def load_adapter_file(adapter, type)

def load_adapter_file(adapter, type)
  # TODO: Remove once HashAdapter namespace is renamed to Hash
  adapter = "hash_adapter" if adapter == "hash"
  adapter_file = File.join(adapter, type)
  require_relative adapter_file
rescue LoadError
  raise UnknownAdapterTypeError.new(adapter, type), cause: nil
end

def load_moxml_adapter(type_name, adapter_name)

def load_moxml_adapter(type_name, adapter_name)
  return if KEY_VALUE_FORMATS.include?(adapter_name)
  Moxml::Adapter.load(type_name)
end

def mappings_class_for(format)

def mappings_class_for(format)
  Lutaml::Model::FormatRegistry.mappings_class_for(format)
end

def normalize_type_name(type_name, adapter_name)

def normalize_type_name(type_name, adapter_name)
  "#{type_name.to_s.gsub("_#{adapter_name}", '')}_adapter"
end

def set_adapter_for(format, adapter)

def set_adapter_for(format, adapter)
  @adapters ||= {}
  @adapters[format] = adapter
end

def to_class_name(str)

Other tags:
    Api: - private
def to_class_name(str)
  str.to_s.split("_").map(&:capitalize).join
end

def transformer_for(format)

def transformer_for(format)
  Lutaml::Model::FormatRegistry.transformer_for(format)
end