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_types ⇒ Object
45 46 47 |
# File 'lib/coradoc/mirror/reverse_builder.rb', line 45 def registered_types REGISTRY.keys end |