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_for(_adapter, type) ⇒ Class
Resolve the adapter class for XML.
-
.load_adapter_file(_adapter, type) ⇒ Object
Load the XML adapter file.
-
.load_moxml_adapter(type_name, _adapter_name) ⇒ Object
Load the Moxml adapter for XML.
-
.to_class_name(str) ⇒ String
Convert string to class name.
Class Method Details
.class_for(_adapter, type) ⇒ Class
Resolve the adapter class for XML
43 44 45 |
# File 'lib/lutaml/xml/adapter_loader.rb', line 43 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
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/lutaml/xml/adapter_loader.rb', line 15 def self.load_adapter_file(_adapter, type) adapter_path = if Lutaml::Model.opal? "lutaml/xml/adapter/#{type}" else File.join(File.dirname(__FILE__), "adapter", type) end require adapter_path rescue LoadError => e # Chain the cause: a known adapter whose underlying engine gem is # missing (e.g. no nokogiri in the Gemfile) must not present as a # bare unknown-type error — the LoadError names the real gap. raise Lutaml::Model::UnknownAdapterTypeError.new("xml", type), cause: e end |
.load_moxml_adapter(type_name, _adapter_name) ⇒ Object
Load the Moxml adapter for XML
34 35 36 |
# File 'lib/lutaml/xml/adapter_loader.rb', line 34 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
51 52 53 |
# File 'lib/lutaml/xml/adapter_loader.rb', line 51 def self.to_class_name(str) str.to_s.split("_").map(&:capitalize).join end |