Class: Coradoc::AsciiDoc::Serializer::ElementRegistry
- Inherits:
-
Object
- Object
- Coradoc::AsciiDoc::Serializer::ElementRegistry
- Defined in:
- lib/coradoc/asciidoc/serializer/element_registry.rb
Overview
Registry for mapping Coradoc model classes to their AsciiDoc serializers. This is the authoritative source for model→serializer mappings.
Pattern mirrors Input::Html::Converters registry for symmetry.
Class Method Summary collapse
-
.clear! ⇒ Object
Clear all registrations (mainly for testing).
-
.get(model_class) ⇒ Class?
Get the serializer for a model class without raising.
-
.lookup(model_class) ⇒ Class
Lookup serializer for a model class.
-
.override(model_class, serializer_class) ⇒ Class?
Override a serializer for a model class This is an alias for register that makes the intent explicit.
-
.register(model_class, serializer_class) ⇒ Object
Register a serializer for a model class.
-
.registered?(model_class) ⇒ Boolean
Check if a model class has a registered serializer.
-
.registered_models ⇒ Array<Class>
Get all registered model classes.
-
.registry ⇒ Hash
Get the registry hash.
-
.unregister(model_class) ⇒ Class?
Unregister a serializer for a model class.
Class Method Details
.clear! ⇒ Object
Clear all registrations (mainly for testing)
82 83 84 |
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 82 def clear! registry.clear end |
.get(model_class) ⇒ Class?
Get the serializer for a model class without raising
47 48 49 |
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 47 def get(model_class) registry[model_class] end |
.lookup(model_class) ⇒ Class
Lookup serializer for a model class
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 55 def lookup(model_class) serializer_class = registry[model_class] unless serializer_class raise ArgumentError, "No serializer registered for #{model_class.name}. " \ 'Please register a serializer in ElementRegistry, or the serializer ' \ 'may not have been loaded yet (check Registrations.load_all!)' end serializer_class end |
.override(model_class, serializer_class) ⇒ Class?
Override a serializer for a model class This is an alias for register that makes the intent explicit
31 32 33 34 35 |
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 31 def override(model_class, serializer_class) previous = registry[model_class] registry[model_class] = serializer_class previous end |
.register(model_class, serializer_class) ⇒ Object
Register a serializer for a model class
22 23 24 |
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 22 def register(model_class, serializer_class) registry[model_class] = serializer_class end |
.registered?(model_class) ⇒ Boolean
Check if a model class has a registered serializer
77 78 79 |
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 77 def registered?(model_class) registry.key?(model_class) end |
.registered_models ⇒ Array<Class>
Get all registered model classes
70 71 72 |
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 70 def registered_models registry.keys end |
.registry ⇒ Hash
Get the registry hash
88 89 90 |
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 88 def registry @@registry ||= {} end |
.unregister(model_class) ⇒ Class?
Unregister a serializer for a model class
40 41 42 |
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 40 def unregister(model_class) registry.delete(model_class) end |