Class: Antlers::PropNode
- Inherits:
-
LeafNode
- Object
- AntlerNode
- LeafNode
- Antlers::PropNode
- Includes:
- Props
- Defined in:
- lib/nodes/prop_node.rb
Instance Attribute Summary
Attributes included from Props
Attributes inherited from AntlerNode
Instance Method Summary collapse
Methods included from Props
Methods included from Variables
Methods included from Queries
user_defined_string?, wrapped_in?
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 22 23 24 |
# 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) # TODO: There's currently 2 results for "Lowkey[renderable_klass.to_s]", this should not be. # TODO: Only provide args that are defined, similar to how render_template does it. initialize_method = Lowkey[renderable_klass.to_s].first[renderable_klass.to_s][:initialize] renderable_instance = initialize_method ? renderable_klass.new(event:, **props) : 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 |