Class: Metanorma::Html::Generator
- Inherits:
-
Object
- Object
- Metanorma::Html::Generator
- Defined in:
- lib/metanorma/html/generator.rb
Class Method Summary collapse
- .generate(document, **options) ⇒ Object
- .register(model_class, renderer_class) ⇒ Object
-
.register_taste(model_class, publisher_abbrev, renderer_class) ⇒ Object
Register a taste: same document model, different renderer based on publisher.
- .renderer_for(document) ⇒ Object
Class Method Details
.generate(document, **options) ⇒ Object
22 23 24 25 |
# File 'lib/metanorma/html/generator.rb', line 22 def generate(document, **) setup! unless @setup renderer_for(document).new.generate_full_document(document) end |
.register(model_class, renderer_class) ⇒ Object
11 12 13 |
# File 'lib/metanorma/html/generator.rb', line 11 def register(model_class, renderer_class) @renderers << [model_class, renderer_class] end |
.register_taste(model_class, publisher_abbrev, renderer_class) ⇒ Object
Register a taste: same document model, different renderer based on publisher. When the document’s first author publisher abbreviation matches, the taste renderer takes precedence over the model-based renderer.
18 19 20 |
# File 'lib/metanorma/html/generator.rb', line 18 def register_taste(model_class, publisher_abbrev, renderer_class) @tastes << [model_class, publisher_abbrev, renderer_class] end |
.renderer_for(document) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/metanorma/html/generator.rb', line 27 def renderer_for(document) setup! unless @setup # Check tastes first (publisher-based dispatch) taste_renderer = find_taste(document) return taste_renderer if taste_renderer # Fall back to model-based dispatch (most specific last) @renderers.reverse_each do |model_class, renderer_class| return renderer_class if document.is_a?(model_class) end BaseRenderer end |