Class: Coradoc::Markdown::Serializer::ElementSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/coradoc/markdown/serializer/element_serializer.rb

Overview

Base class for element serializers. Subclasses declare:

  • ‘handles_type TypeClass` — the model class (or ancestor) they accept

  • ‘call(element, ctx)` — the actual serialization

‘handles?` defaults to `is_a?(handles_type)`; override for finer conditional dispatch (e.g. “I handle DefinitionList only when nested”).

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.callObject



27
28
29
# File 'lib/coradoc/markdown/serializer/element_serializer.rb', line 27

def call(...)
  new.call(...)
end

.handles?(_element) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/coradoc/markdown/serializer/element_serializer.rb', line 23

def handles?(_element)
  true
end

.handles_type(klass = nil) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/coradoc/markdown/serializer/element_serializer.rb', line 14

def handles_type(klass = nil)
  if klass
    @handles_type = klass
    self
  else
    @handles_type || (superclass.respond_to?(:handles_type) ? superclass.handles_type : nil)
  end
end

Instance Method Details

#call(_element, _ctx) ⇒ Object

Raises:

  • (NotImplementedError)


32
33
34
# File 'lib/coradoc/markdown/serializer/element_serializer.rb', line 32

def call(_element, _ctx)
  raise NotImplementedError, "#{self.class.name}#call not implemented"
end

#handles?(element) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/coradoc/markdown/serializer/element_serializer.rb', line 36

def handles?(element)
  self.class.handles?(element)
end

#handles_typeObject



40
41
42
# File 'lib/coradoc/markdown/serializer/element_serializer.rb', line 40

def handles_type
  self.class.handles_type
end