Class: Antlers::VarNode

Inherits:
LeafNode show all
Includes:
Variables
Defined in:
lib/nodes/var_node.rb

Constant Summary

Constants inherited from AntlerNode

AntlerNode::DEF_KEY, AntlerNode::END_KEY

Instance Attribute Summary collapse

Attributes inherited from AntlerNode

#name

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Variables

#evaluate, #fallback

Methods included from Queries

user_defined_string?, wrapped_in?

Methods inherited from AntlerNode

#==, #end_name, #eql?, #hash

Constructor Details

#initialize(value:, name: :var, raw: false) ⇒ VarNode

Returns a new instance of VarNode.



14
15
16
17
18
19
# File 'lib/nodes/var_node.rb', line 14

def initialize(value:, name: :var, raw: false)
  super(name:)

  @value = value
  @raw = raw
end

Instance Attribute Details

#valueObject (readonly)

Returns the value of attribute value.



12
13
14
# File 'lib/nodes/var_node.rb', line 12

def value
  @value
end

Class Method Details

.build(segment:) ⇒ Object



34
35
36
# File 'lib/nodes/var_node.rb', line 34

def build(segment:, **)
  new(value: segment[:var] || segment[:raw_var], raw: !!segment[:raw_var])
end

.match?(segment:) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/nodes/var_node.rb', line 30

def match?(segment:)
  segment[:var] || segment[:raw_var]
end

Instance Method Details

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



21
22
23
24
25
26
27
# File 'lib/nodes/var_node.rb', line 21

def render(current_binding: nil, parent_binding: nil, slot_node: nil)
  result = evaluate(name: @value, current_binding:) || fallback(@value)

  return result if @raw

  ERB::Util.html_escape(result)
end