class Prism::AssocNode
Represents a hash key/value pair.
{ a => b }
^^^^^^
Public Class Methods
Source
# File lib/prism/node.rb, line 1517 def initialize(source, node_id, location, flags, key, value, operator_loc) @source = source @node_id = node_id @location = location @flags = flags @key = key @value = value @operator_loc = operator_loc end
Initialize a new AssocNode node.
Public Instance Methods
Source
# File lib/prism/node.rb, line 1609 def key @key end
The key of the association. This can be any non-void expression.
{ a: b }
^
{ foo => bar }
^^^
{ def a; end => 1 }
^^^^^^^^^^
Source
# File lib/prism/node.rb, line 1623 def value @value end
The value of the association, if present. This can be any non-void expression.
{ foo => bar }
^^^
{ x: 1 }
^
Locations
Public Instance Methods
Source
# File lib/prism/node.rb, line 1635 def operator_loc location = @operator_loc case location when nil nil when Location location else @operator_loc = Location.new(source, location >> 32, location & 0xFFFFFFFF) end end
The Location of the => operator, if present.
{ foo => bar }
^^
Node Interface
Public Class Methods
Public Instance Methods
Source
# File lib/prism/node.rb, line 1539 def accept(visitor) visitor.visit_assoc_node(self) end
See Node.accept.
Source
# File lib/prism/node.rb, line 1544 def child_nodes [key, value] end
See Node.child_nodes.
Also aliased as: deconstruct
Source
# File lib/prism/node.rb, line 1562 def comment_targets [key, value, *operator_loc] #: Array[Prism::node | Location] end
See Node.comment_targets.
Source
# File lib/prism/node.rb, line 1557 def compact_child_nodes [key, value] end
Source
# File lib/prism/node.rb, line 1570 def copy(node_id: self.node_id, location: self.location, flags: self.flags, key: self.key, value: self.value, operator_loc: self.operator_loc) AssocNode.new(source, node_id, location, flags, key, value, operator_loc) end
Creates a copy of self with the given fields, using self as the template.
Source
# File lib/prism/node.rb, line 1549 def each_child_node return to_enum(:each_child_node) unless block_given? yield key yield value end
See Node.each_child_node.
Repository
Public Instance Methods
Source
# File lib/prism/node.rb, line 1650 def save_operator_loc(repository) repository.enter(node_id, :operator_loc) unless @operator_loc.nil? end
Save the operator_loc location using the given saved source so that it can be retrieved later.
Slicing
Public Instance Methods
Source
# File lib/prism/node.rb, line 1659 def operator operator_loc&.slice end
Slice the location of operator_loc from the source.