Module: Coradoc::Mirror::ReverseBuilder

Defined in:
lib/coradoc/mirror/reverse_builder.rb,
lib/coradoc/mirror/reverse_builder/toc.rb,
lib/coradoc/mirror/reverse_builder/base.rb,
lib/coradoc/mirror/reverse_builder/text.rb,
lib/coradoc/mirror/reverse_builder/image.rb,
lib/coradoc/mirror/reverse_builder/table.rb,
lib/coradoc/mirror/reverse_builder/verse.rb,
lib/coradoc/mirror/reverse_builder/figure.rb,
lib/coradoc/mirror/reverse_builder/header.rb,
lib/coradoc/mirror/reverse_builder/caption.rb,
lib/coradoc/mirror/reverse_builder/example.rb,
lib/coradoc/mirror/reverse_builder/include.rb,
lib/coradoc/mirror/reverse_builder/section.rb,
lib/coradoc/mirror/reverse_builder/sidebar.rb,
lib/coradoc/mirror/reverse_builder/document.rb,
lib/coradoc/mirror/reverse_builder/preamble.rb,
lib/coradoc/mirror/reverse_builder/sections.rb,
lib/coradoc/mirror/reverse_builder/footnotes.rb,
lib/coradoc/mirror/reverse_builder/list_item.rb,
lib/coradoc/mirror/reverse_builder/paragraph.rb,
lib/coradoc/mirror/reverse_builder/table_row.rb,
lib/coradoc/mirror/reverse_builder/toc_entry.rb,
lib/coradoc/mirror/reverse_builder/admonition.rb,
lib/coradoc/mirror/reverse_builder/blockquote.rb,
lib/coradoc/mirror/reverse_builder/code_block.rb,
lib/coradoc/mirror/reverse_builder/open_block.rb,
lib/coradoc/mirror/reverse_builder/pass_block.rb,
lib/coradoc/mirror/reverse_builder/raw_inline.rb,
lib/coradoc/mirror/reverse_builder/soft_break.rb,
lib/coradoc/mirror/reverse_builder/stem_block.rb,
lib/coradoc/mirror/reverse_builder/table_body.rb,
lib/coradoc/mirror/reverse_builder/table_cell.rb,
lib/coradoc/mirror/reverse_builder/table_head.rb,
lib/coradoc/mirror/reverse_builder/bullet_list.rb,
lib/coradoc/mirror/reverse_builder/frontmatter.rb,
lib/coradoc/mirror/reverse_builder/inline_text.rb,
lib/coradoc/mirror/reverse_builder/biblio_entry.rb,
lib/coradoc/mirror/reverse_builder/bibliography.rb,
lib/coradoc/mirror/reverse_builder/ordered_list.rb,
lib/coradoc/mirror/reverse_builder/generic_block.rb,
lib/coradoc/mirror/reverse_builder/literal_block.rb,
lib/coradoc/mirror/reverse_builder/footnote_entry.rb,
lib/coradoc/mirror/reverse_builder/definition_list.rb,
lib/coradoc/mirror/reverse_builder/footnote_marker.rb,
lib/coradoc/mirror/reverse_builder/horizontal_rule.rb

Overview

OCP-compliant registry for Mirror node -> CoreModel transformation.

Adding support for a new Mirror node type is purely additive:

# reverse_builder/<name>.rb
require_relative 'base'
module Coradoc::Mirror::ReverseBuilder
  class Figure < Base
    registers 'figure'
    def build(node) = CoreModel::Image.new(...)
  end
end

Then add a single ‘require_relative` for the new file below. No edits to MirrorToCoreModel or any other existing class — the registry is the single source of truth for “which type string maps to which builder” (MECE).

This file is the autoload target for the ReverseBuilder constant (see coradoc/mirror.rb). Each Builder subclass lives in its own file under reverse_builder/; eager-requiring them here populates the REGISTRY at load time so every caller sees a full registry. Mirror-level mark dispatch lives in MarkReverseBuilder (mark_reverse_builder.rb).

Defined Under Namespace

Classes: Admonition, Base, BiblioEntry, Bibliography, Blockquote, BulletList, Caption, CodeBlock, DefinitionList, Document, Example, Figure, FootnoteEntry, FootnoteMarker, Footnotes, Frontmatter, GenericBlock, Header, HorizontalRule, Image, Include, InlineText, ListItem, LiteralBlock, OpenBlock, OrderedList, Paragraph, PassBlock, Preamble, RawInline, Section, Sections, Sidebar, SoftBreak, StemBlock, Table, TableBody, TableCell, TableHead, TableRow, Text, Toc, TocEntry, Verse

Constant Summary collapse

REGISTRY =

Not frozen: subclasses call ‘register` from their class body at load time, and `registers` may fire late via autoload. Freezing here breaks the first mirror-to-core round-trip after load.

{}

Class Method Summary collapse

Class Method Details

.lookup(type) ⇒ Object



41
42
43
# File 'lib/coradoc/mirror/reverse_builder.rb', line 41

def lookup(type)
  REGISTRY[type]
end

.register(type, builder_class) ⇒ Object



37
38
39
# File 'lib/coradoc/mirror/reverse_builder.rb', line 37

def register(type, builder_class)
  REGISTRY[type] = builder_class
end

.registered_typesObject



45
46
47
# File 'lib/coradoc/mirror/reverse_builder.rb', line 45

def registered_types
  REGISTRY.keys
end