Module: Lutaml::Xml::AdapterLoader

Defined in:
lib/lutaml/xml/adapter_loader.rb

Overview

Adapter loader for XML format.

Handles XML-specific adapter file loading and class resolution. Registered with FormatRegistry so Configuration can delegate XML adapter loading without hardcoded XML references.

Class Method Summary collapse

Class Method Details

.class_for(_adapter, type) ⇒ Class

Resolve the adapter class for XML

Parameters:

  • _adapter (String)

    The adapter format name (“xml”)

  • type (String)

    The normalized type name (e.g., “nokogiri_adapter”)

Returns:

  • (Class)

    The adapter class



40
41
42
# File 'lib/lutaml/xml/adapter_loader.rb', line 40

def self.class_for(_adapter, type)
  Lutaml::Xml::Adapter.const_get(to_class_name(type))
end

.load_adapter_file(_adapter, type) ⇒ Object

Load the XML adapter file

Parameters:

  • _adapter (String)

    The adapter format name (“xml”)

  • type (String)

    The normalized type name (e.g., “nokogiri_adapter”)



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/lutaml/xml/adapter_loader.rb', line 15

def self.load_adapter_file(_adapter, type)
  adapter_path = if Lutaml::Model::RuntimeCompatibility.opal?
                   "lutaml/xml/adapter/#{type}"
                 else
                   File.join(File.dirname(__FILE__), "adapter", type)
                 end
  require adapter_path
rescue LoadError
  raise Lutaml::Model::UnknownAdapterTypeError.new("xml", type),
        cause: nil
end

.load_moxml_adapter(type_name, _adapter_name) ⇒ Object

Load the Moxml adapter for XML

Parameters:

  • type_name (Symbol)

    The adapter type (:nokogiri, :ox, etc.)

  • _adapter_name (Symbol)

    The format name (:xml)



31
32
33
# File 'lib/lutaml/xml/adapter_loader.rb', line 31

def self.load_moxml_adapter(type_name, _adapter_name)
  Moxml::Adapter.load(type_name)
end

.to_class_name(str) ⇒ String

Convert string to class name

Parameters:

  • str (String)

    The string to convert

Returns:

  • (String)

    The class name



48
49
50
# File 'lib/lutaml/xml/adapter_loader.rb', line 48

def self.to_class_name(str)
  str.to_s.split("_").map(&:capitalize).join
end