Class: Metanorma::Html::BaseRenderer::RendererContext

Inherits:
Object
  • Object
show all
Defined in:
lib/metanorma/html/base_renderer.rb

Overview

Facade object for Drops to call renderer methods without exposing the full private interface. Delegates via method_missing with an explicit allowlist — adding new delegations only requires updating DELEGATED_METHODS, not writing a new one-liner.

Constant Summary collapse

DELEGATED_METHODS =
%i[
  safe_attr escape_html extract_block_label extract_plain_text
  capture_output render_paragraph render_mixed_inline
  render_inline_element render_unordered_list render_ordered_list
  render_definition_list render_sourcecode render_table
  render_figure render_quote render_formula render_note
  render_image render_stem_content register_figure_entry
  render_liquid
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(renderer) ⇒ RendererContext

Returns a new instance of RendererContext.



100
101
102
# File 'lib/metanorma/html/base_renderer.rb', line 100

def initialize(renderer)
  @renderer = renderer
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, **kwargs, &block) ⇒ Object (private)



110
111
112
113
114
115
116
# File 'lib/metanorma/html/base_renderer.rb', line 110

def method_missing(method_name, *args, **kwargs, &block)
  if DELEGATED_METHODS.include?(method_name)
    @renderer.send(method_name, *args, **kwargs, &block)
  else
    super
  end
end

Instance Method Details

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


104
105
106
# File 'lib/metanorma/html/base_renderer.rb', line 104

def respond_to_missing?(method_name, include_private = false)
  DELEGATED_METHODS.include?(method_name) || super
end