Class: Antlers::PropNode

Inherits:
LeafNode show all
Includes:
Props
Defined in:
lib/nodes/prop_node.rb

Instance Attribute Summary

Attributes included from Props

#props

Attributes inherited from AntlerNode

#name

Instance Method Summary collapse

Methods included from Props

#initialize

Methods inherited from AntlerNode

#==, #eql?, #hash, #initialize

Instance Method Details

#render(current_binding: nil, parent_binding: nil, slot_node: nil, namespace: nil) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/nodes/prop_node.rb', line 10

def render(current_binding: nil, parent_binding: nil, slot_node: nil, namespace: nil)
  props = evaluate_props(props: @props, current_binding:)
  event = create_render_event(props:)

  renderable_klass = class_from_namespace(namespace: namespace&.split('::') || [], name: @name)
  renderable_instance = renderable_klass.new(event:)

  # Classes referenced via "<{ ChildNode }>" must implement class/instance render/render_template methods (See LowNode).
  return renderable_instance.render_template(event:, parent_binding:, props:) if renderable_klass.template

  props.empty? ? renderable_instance.render(event:) : renderable_instance.render(event:, **props)
end