class Eskimo::Core::Renderer
Render a component or a list of ones.
Public Class Methods
new(**props)
click to toggle source
@param props [Hash]
Properties to pass to each component being rendered.
# File lib/eskimo/core/renderer.rb, line 8 def initialize(**props) @props = { **props, render: method(:render) } end
Public Instance Methods
apply(&components)
click to toggle source
@param components [Proc]
A block that returns components to render.
# File lib/eskimo/core/renderer.rb, line 14 def apply(&components) render(components) end
Private Instance Methods
bail(component)
click to toggle source
# File lib/eskimo/core/renderer.rb, line 40 def bail(component) raise ArgumentError.new( "Eskimo: don't know how to render #{component.class} => #{component}" ) end
render(*components)
click to toggle source
# File lib/eskimo/core/renderer.rb, line 20 def render(*components) buf = +'' for component in components do if component.is_a?(String) buf << component elsif component.is_a?(Array) buf << render(*component) elsif component.is_a?(Proc) buf << render(component[**@props]) elsif component.respond_to?(:render) buf << render(component.render(**@props)) elsif component bail(component) end end buf end