Class: Antlers::NodeFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/factories/node_factory.rb

Instance Method Summary collapse

Constructor Details

#initialize(namespace:) ⇒ NodeFactory

Returns a new instance of NodeFactory.



12
13
14
# File 'lib/factories/node_factory.rb', line 12

def initialize(namespace:)
  @namespace = namespace
end

Instance Method Details

#for_node(segment:) ⇒ Object



16
17
18
19
# File 'lib/factories/node_factory.rb', line 16

def for_node(segment:)
  value, key, items = segment.values_at(:for_def, :key, :in)
  ForNode.new(name: value, key:, value:, items:)
end

#form_node(segment:) ⇒ Object



21
22
23
24
25
26
# File 'lib/factories/node_factory.rb', line 21

def form_node(segment:)
  action, method = segment.values_at(:form_def, :method)
  return FormNode.new(name: action, action:, method:) if method

  FormNode.new(name: action, action:)
end

#prop_node(segment:) ⇒ Object



28
29
30
# File 'lib/factories/node_factory.rb', line 28

def prop_node(segment:)
  PropNode.new(name: segment[:prop], props: segment[:props], namespace:)
end

#slot_node(segment:) ⇒ Object



32
33
34
# File 'lib/factories/node_factory.rb', line 32

def slot_node(segment:)
  SlotNode.new(name: segment[:slot_def], props: segment[:props], namespace:)
end

#var_node(segment:) ⇒ Object



36
37
38
# File 'lib/factories/node_factory.rb', line 36

def var_node(segment:)
  VarNode.new(value: segment[:var])
end

#yield_node(segment:) ⇒ Object



40
41
42
# File 'lib/factories/node_factory.rb', line 40

def yield_node(segment:)
  YieldNode.new(name: segment[:slot])
end