Class: Journeybook::ComponentRenderer
- Inherits:
-
Object
- Object
- Journeybook::ComponentRenderer
- Defined in:
- app/services/journeybook/component_renderer.rb
Instance Method Summary collapse
-
#initialize(registry: Journeybook.components) ⇒ ComponentRenderer
constructor
A new instance of ComponentRenderer.
- #render(component, page: nil) ⇒ String
Constructor Details
#initialize(registry: Journeybook.components) ⇒ ComponentRenderer
Returns a new instance of ComponentRenderer.
6 7 8 |
# File 'app/services/journeybook/component_renderer.rb', line 6 def initialize(registry: Journeybook.components) @registry = registry end |
Instance Method Details
#render(component, page: nil) ⇒ String
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'app/services/journeybook/component_renderer.rb', line 12 def render(component, page: nil) return "" if component.hidden? registration = @registry.registered(component.name) component_class = @registry.fetch(component.name) schema = registration.normalized_props props = coerce_props(component.props.except(ComponentParser::HIDDEN_PROP), schema, page) link_targets = link_targets(component.props, schema, page) html = if component_class.respond_to?(:render) if accepts_keyword?(component_class.method(:render), :page) component_class.render(**props, page: page).to_s else component_class.render(**props).to_s end elsif accepts_keyword?(component_class.instance_method(:initialize), :page) component_class.new(**props, page: page).render.to_s else component_class.new(**props).render.to_s end apply_link_targets(html, link_targets) end |