Class: Lutaml::Model::FormatRegistry
- Inherits:
-
Object
- Object
- Lutaml::Model::FormatRegistry
- Defined in:
- lib/lutaml/model/format_registry.rb
Overview
Registry for serialization formats and their associated components.
Manages the registration of formats (xml, json, yaml, etc.) and their mapping classes, transformers, and adapter metadata. Adapter loading and resolution is delegated to AdapterResolver.
Class Method Summary collapse
- .adapter_class_for(format) ⇒ Object
- .adapter_loader_for(format) ⇒ Object
- .adapter_options_for(format) ⇒ Object
- .all ⇒ Object
- .all_error_types ⇒ Object
- .castable_type_for(format) ⇒ Object
- .error_types_for(format) ⇒ Object
- .formats ⇒ Object
- .info(format) ⇒ Object
- .key_value?(format) ⇒ Boolean
- .key_value_formats ⇒ Object
- .mappings_class_for(format) ⇒ Object
-
.register(format, mapping_class:, adapter_class:, transformer:, adapter_loader: nil, castable_type: nil, key_value: nil, error_types: nil, adapter_options: nil) ⇒ Object
Register a new format with its associated components.
- .registered?(format) ⇒ Boolean
- .reset! ⇒ Object
- .transformer_for(format) ⇒ Object
- .unregister(format) ⇒ Object
Class Method Details
.adapter_class_for(format) ⇒ Object
84 85 86 |
# File 'lib/lutaml/model/format_registry.rb', line 84 def adapter_class_for(format) registered_formats.dig(format, :adapter_class) end |
.adapter_loader_for(format) ⇒ Object
88 89 90 |
# File 'lib/lutaml/model/format_registry.rb', line 88 def adapter_loader_for(format) registered_formats.dig(format, :adapter_loader) end |
.adapter_options_for(format) ⇒ Object
92 93 94 |
# File 'lib/lutaml/model/format_registry.rb', line 92 def (format) registered_formats.dig(format, :adapter_options) end |
.all ⇒ Object
126 127 128 |
# File 'lib/lutaml/model/format_registry.rb', line 126 def all registered_formats.dup end |
.all_error_types ⇒ Object
116 117 118 119 120 |
# File 'lib/lutaml/model/format_registry.rb', line 116 def all_error_types registered_formats.values.filter_map do |info| info[:error_types] end.flatten.compact end |
.castable_type_for(format) ⇒ Object
96 97 98 |
# File 'lib/lutaml/model/format_registry.rb', line 96 def castable_type_for(format) registered_formats.dig(format, :castable_type) end |
.error_types_for(format) ⇒ Object
112 113 114 |
# File 'lib/lutaml/model/format_registry.rb', line 112 def error_types_for(format) registered_formats.dig(format, :error_types) end |
.formats ⇒ Object
100 101 102 |
# File 'lib/lutaml/model/format_registry.rb', line 100 def formats registered_formats.keys end |
.info(format) ⇒ Object
122 123 124 |
# File 'lib/lutaml/model/format_registry.rb', line 122 def info(format) registered_formats[format] end |
.key_value?(format) ⇒ Boolean
108 109 110 |
# File 'lib/lutaml/model/format_registry.rb', line 108 def key_value?(format) registered_formats.dig(format, :key_value) == true end |
.key_value_formats ⇒ Object
104 105 106 |
# File 'lib/lutaml/model/format_registry.rb', line 104 def key_value_formats registered_formats.select { |_, info| info[:key_value] }.keys end |
.mappings_class_for(format) ⇒ Object
76 77 78 |
# File 'lib/lutaml/model/format_registry.rb', line 76 def mappings_class_for(format) registered_formats.dig(format, :mapping_class) end |
.register(format, mapping_class:, adapter_class:, transformer:, adapter_loader: nil, castable_type: nil, key_value: nil, error_types: nil, adapter_options: nil) ⇒ Object
Register a new format with its associated components.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/lutaml/model/format_registry.rb', line 24 def register(format, mapping_class:, adapter_class:, transformer:, adapter_loader: nil, castable_type: nil, key_value: nil, error_types: nil, adapter_options: nil) validate_registration!(format, mapping_class, transformer) registered_formats[format] = { mapping_class: mapping_class, transformer: transformer, adapter_class: adapter_class, adapter_loader: adapter_loader, castable_type: castable_type, key_value: key_value, error_types: error_types, adapter_options: , registered_at: Time.now, } # Register type methods on model classes ::Lutaml::Model::Type::Value.register_format_to_from_methods(format) ::Lutaml::Model::Serialize.register_format_mapping_method(format) ::Lutaml::Model::Serialize.register_from_format_method(format) ::Lutaml::Model::Serialize.register_to_format_method(format) ::Lutaml::Model::Attribute.format_specific_warn_names.push(:"to_#{format}") # Register adapter metadata with AdapterResolver if # Selectable adapters — have multiple options (xml, toml, json, yaml, hash) AdapterResolver.(format, ) elsif adapter_class # Fixed adapter (jsonl, yamls) — register as sole available adapter adapter_name = derive_adapter_name(adapter_class) AdapterResolver.register_fixed(format, adapter_class, adapter_name) end # Define adapter type accessor methods on Config module ::Lutaml::Model::Config.define_adapter_type_methods(format) # Define adapter accessor methods on Configuration class define_configuration_adapter_methods(format, ) registered_formats[format] end |
.registered?(format) ⇒ Boolean
72 73 74 |
# File 'lib/lutaml/model/format_registry.rb', line 72 def registered?(format) registered_formats.key?(format) end |
.reset! ⇒ Object
130 131 132 |
# File 'lib/lutaml/model/format_registry.rb', line 130 def reset! @registered_formats = nil end |
.transformer_for(format) ⇒ Object
80 81 82 |
# File 'lib/lutaml/model/format_registry.rb', line 80 def transformer_for(format) registered_formats.dig(format, :transformer) end |
.unregister(format) ⇒ Object
68 69 70 |
# File 'lib/lutaml/model/format_registry.rb', line 68 def unregister(format) registered_formats.delete(format) end |