Class: Coradoc::AsciiDoc::Serializer::ElementRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/coradoc/asciidoc/serializer/element_registry.rb

Overview

Registry for mapping Coradoc model classes to their AsciiDoc serializers.

Thin layer over ‘Coradoc::Dispatch.strict`: each public method delegates to a single Dispatch instance so the dispatch mechanism (storage, miss-handling, override semantics) lives in one place. Adoc-specific concerns (the ArgumentError wording on miss, the `registered_models` name) stay here.

Examples:

Registering a custom serializer

ElementRegistry.override(Model::Paragraph, CustomParagraphSerializer)

Wrapping an existing serializer

original = ElementRegistry.get(Model::Paragraph)
ElementRegistry.override(Model::Paragraph, WrapperSerializer.new(original))

Constant Summary collapse

DISPATCH =
Coradoc::Dispatch.strict

Class Method Summary collapse

Class Method Details

.clear!Object



58
59
60
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 58

def clear!
  DISPATCH.clear!
end

.get(model_class) ⇒ Object



36
37
38
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 36

def get(model_class)
  DISPATCH.lookup(model_class)
end

.lookup(model_class) ⇒ Object

Raises:

  • (ArgumentError)


40
41
42
43
44
45
46
47
48
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 40

def lookup(model_class)
  serializer_class = DISPATCH.lookup(model_class)
  return serializer_class if 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

.override(model_class, serializer_class) ⇒ Object



28
29
30
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 28

def override(model_class, serializer_class)
  DISPATCH.override(model_class, serializer_class)
end

.register(model_class, serializer_class) ⇒ Object



24
25
26
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 24

def register(model_class, serializer_class)
  DISPATCH.register(model_class, serializer_class)
end

.registered?(model_class) ⇒ Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 54

def registered?(model_class)
  DISPATCH.registered?(model_class)
end

.registered_modelsObject



50
51
52
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 50

def registered_models
  DISPATCH.registered_keys
end

.unregister(model_class) ⇒ Object



32
33
34
# File 'lib/coradoc/asciidoc/serializer/element_registry.rb', line 32

def unregister(model_class)
  DISPATCH.unregister(model_class)
end