Module: Lutaml::Model::Config
Overview
Configuration module - single entry point for all configuration.
Delegates adapter resolution to AdapterResolver and scoped overrides to AdapterScope. Keeps the configure block API for backward compatibility.
Constant Summary collapse
- AVAILABLE_FORMATS =
Dynamic adapter type accessors for boot-time formats. Additional formats (xml, etc.) get their accessors registered via FormatRegistry.register which calls define_adapter_type_methods.
%i[json jsonl yaml toml hash yamls].freeze
- KEY_VALUE_FORMATS =
AVAILABLE_FORMATS
Instance Method Summary collapse
-
#adapter_for(format) ⇒ Class?
Get adapter class for a format using the full resolution chain.
-
#available_formats ⇒ Object
Dynamic format discovery from FormatRegistry.
-
#configure {|instance| ... } ⇒ Object
Delegate configure to Configuration.
- #default_context_id ⇒ Object
- #default_context_id=(value) ⇒ Object
- #default_register ⇒ Object
- #default_register=(value) ⇒ Object
-
#define_adapter_type_methods(format) ⇒ Object
Define dynamic adapter type accessor methods for a format.
-
#instance ⇒ Object
Singleton Configuration instance.
-
#key_value_formats ⇒ Object
Dynamic key-value format discovery from FormatRegistry.
- #mappings_class_for(format) ⇒ Object
-
#set_adapter_for(format, adapter) ⇒ Object
Store a pre-resolved adapter class for a format.
- #to_class_name(str) ⇒ Object
- #transformer_for(format) ⇒ Object
-
#with_adapter(**overrides) { ... } ⇒ Object
Block-scoped adapter override (thread-safe).
Instance Method Details
#adapter_for(format) ⇒ Class?
Get adapter class for a format using the full resolution chain.
59 60 61 |
# File 'lib/lutaml/model/config.rb', line 59 def adapter_for(format) AdapterResolver.adapter_for(format) end |
#available_formats ⇒ Object
Dynamic format discovery from FormatRegistry
13 14 15 |
# File 'lib/lutaml/model/config.rb', line 13 def available_formats FormatRegistry.formats end |
#configure {|instance| ... } ⇒ Object
Delegate configure to Configuration
50 51 52 53 |
# File 'lib/lutaml/model/config.rb', line 50 def configure yield instance self end |
#default_context_id ⇒ Object
111 112 113 |
# File 'lib/lutaml/model/config.rb', line 111 def default_context_id instance.default_context_id end |
#default_context_id=(value) ⇒ Object
115 116 117 |
# File 'lib/lutaml/model/config.rb', line 115 def default_context_id=(value) instance.default_context_id = value end |
#default_register ⇒ Object
103 104 105 |
# File 'lib/lutaml/model/config.rb', line 103 def default_register instance.default_register end |
#default_register=(value) ⇒ Object
107 108 109 |
# File 'lib/lutaml/model/config.rb', line 107 def default_register=(value) instance.default_register = value end |
#define_adapter_type_methods(format) ⇒ Object
Define dynamic adapter type accessor methods for a format. Called by FormatRegistry.register when a new format is registered.
Defines two pairs of methods:
- #{format}_adapter / #{format}_adapter= — adapter class getter/setter
- #{format}_adapter_type / #{format}_adapter_type= — type name getter/setter
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/lutaml/model/config.rb', line 127 def define_adapter_type_methods(format) return if respond_to?(:"#{format}_adapter_type=") # Adapter class getter (returns Class) define_method(:"#{format}_adapter") do AdapterResolver.adapter_for(format) end # Adapter class setter (accepts Class) define_method(:"#{format}_adapter=") do |adapter_klass| AdapterResolver.set_adapter_class(format, adapter_klass) end # Adapter type name setter (accepts Symbol like :nokogiri) define_method(:"#{format}_adapter_type=") do |type_name| AdapterResolver.set_adapter_type(format, type_name) end # Adapter type name getter (returns Symbol or nil) define_method(:"#{format}_adapter_type") do AdapterResolver.configured_type(format) end end |
#instance ⇒ Object
Singleton Configuration instance
23 24 25 |
# File 'lib/lutaml/model/config.rb', line 23 def instance @instance ||= Configuration.new end |
#key_value_formats ⇒ Object
Dynamic key-value format discovery from FormatRegistry
18 19 20 |
# File 'lib/lutaml/model/config.rb', line 18 def key_value_formats FormatRegistry.key_value_formats end |
#mappings_class_for(format) ⇒ Object
95 96 97 |
# File 'lib/lutaml/model/config.rb', line 95 def mappings_class_for(format) instance.mappings_class_for(format) end |
#set_adapter_for(format, adapter) ⇒ Object
Store a pre-resolved adapter class for a format.
67 68 69 |
# File 'lib/lutaml/model/config.rb', line 67 def set_adapter_for(format, adapter) AdapterResolver.set_adapter_class(format, adapter) end |
#to_class_name(str) ⇒ Object
151 152 153 |
# File 'lib/lutaml/model/config.rb', line 151 def to_class_name(str) str.to_s.split("_").map(&:capitalize).join end |
#transformer_for(format) ⇒ Object
99 100 101 |
# File 'lib/lutaml/model/config.rb', line 99 def transformer_for(format) instance.transformer_for(format) end |
#with_adapter(**overrides) { ... } ⇒ Object
Block-scoped adapter override (thread-safe).
Pushes adapter overrides onto a thread-local stack for the duration of the block. Restores previous state on exit.
45 46 47 |
# File 'lib/lutaml/model/config.rb', line 45 def with_adapter(**overrides, &) AdapterScope.with(overrides, &) end |