Class: Coradoc::AsciiDoc::Serializer::AdocSerializer
- Inherits:
-
Object
- Object
- Coradoc::AsciiDoc::Serializer::AdocSerializer
- Defined in:
- lib/coradoc/asciidoc/serializer/adoc_serializer.rb
Overview
Main orchestrator for serializing Coradoc models to AsciiDoc format. Dispatches to appropriate serializer via ElementRegistry.
This class is ONLY responsible for orchestration and dispatch. Element registration is handled by ElementRegistry.
Class Method Summary collapse
-
.serialize(model, options = {}) ⇒ String
Serialize a Coradoc model to AsciiDoc string.
-
.serializer_for(model) ⇒ Serializers::Base
Get appropriate serializer instance for a model.
Class Method Details
.serialize(model, options = {}) ⇒ String
Serialize a Coradoc model to AsciiDoc string
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/coradoc/asciidoc/serializer/adoc_serializer.rb', line 20 def serialize(model, = {}) case model when nil '' when String model when Array serialize_array(model, ) when Coradoc::AsciiDoc::Model::Base serialize_model(model, ) when Lutaml::Model::Serializable raise ArgumentError, "Cannot serialize #{model.class.name} to AsciiDoc. " \ 'Expected a Coradoc::AsciiDoc::Model::Base with a registered serializer.' else raise ArgumentError, "Unknown element type for AsciiDoc serialization: #{model.class}. " \ 'Expected String, Array, or Coradoc::AsciiDoc::Model::Base.' end end |
.serializer_for(model) ⇒ Serializers::Base
Get appropriate serializer instance for a model
44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/coradoc/asciidoc/serializer/adoc_serializer.rb', line 44 def serializer_for(model) # Try to find registered serializer if ElementRegistry.registered?(model.class) serializer_class = ElementRegistry.lookup(model.class) return serializer_class.new end # Fallback: use FallbackSerializer which raises a clear error return FallbackSerializer.new raise ArgumentError, "No serializer registered for #{model.class.name} and model doesn't respond to to_adoc" end |