class Prism::RangeNode
Represents the use of the .. or ... operators.
1..2 ^^^^ c if a =~ /left/ ... b =~ /right/ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Public Class Methods
(Source source, Integer node_id, Location location, Integer flags, Prism::node? left, Prism::node? right, Location operator_loc) → void
Source
# File lib/prism/node.rb, line 27608 def initialize(source, node_id, location, flags, left, right, operator_loc) @source = source @node_id = node_id @location = location @flags = flags @left = left @right = right @operator_loc = operator_loc end
Initialize a new RangeNode node.
Public Instance Methods
() → Prism::node?
Source
# File lib/prism/node.rb, line 27737 def left @left end
The left-hand side of the range, if present. It can be either nil or any non-void expression.
1... ^ hello...goodbye ^^^^^
() → Prism::node?
Source
# File lib/prism/node.rb, line 27758 def right @right end
The right-hand side of the range, if present. It can be either nil or any non-void expression.
..5 ^ 1...foo ^^^
Explore code sample If neither right-hand or left-hand side was included, this will be an ErrorRecoveryNode.
Flags
Public Instance Methods
() → bool
Source
# File lib/prism/node.rb, line 27717 def exclude_end? flags.anybits?(RangeFlags::EXCLUDE_END) end
… operator
Locations
Public Instance Methods
Source
# File lib/prism/node.rb, line 27769 def operator_loc location = @operator_loc return location if location.is_a?(Location) @operator_loc = Location.new(source, location >> 32, location & 0xFFFFFFFF) end
The Location of the .. or ... operator.
Node Interface
These methods are present on all subclasses of Node. Read the node interface docs for more information.
Public Class Methods
Public Instance Methods
(_Visitor visitor) → untyped
Source
# File lib/prism/node.rb, line 27632 def accept(visitor) visitor.visit_range_node(self) end
See Node.accept.
() → Array[node?]
Source
# File lib/prism/node.rb, line 27639 def child_nodes [left, right] end
See Node.child_nodes.
() → Array[node]
Source
# File lib/prism/node.rb, line 27657 def compact_child_nodes compact = [] #: Array[Prism::node] if (left = self.left); compact << left; end if (right = self.right); compact << right; end compact end
(?node_id: Integer, ?location: Location, ?flags: Integer, ?left: Prism::node?, ?right: Prism::node?, ?operator_loc: Location) → RangeNode
Source
# File lib/prism/node.rb, line 27670 def copy(node_id: self.node_id, location: self.location, flags: self.flags, left: self.left, right: self.right, operator_loc: self.operator_loc) RangeNode.new(source, node_id, location, flags, left, right, operator_loc) end
Creates a copy of self with the given fields, using self as the template.
() → Enumerator[node, void]
() { (node) → void } → void
Source
# File lib/prism/node.rb, line 27647 def each_child_node(&blk) return to_enum(:each_child_node) unless block_given? if (left = self.left); yield left; end if (right = self.right); yield right; end end
See Node.each_child_node.
Repository
Methods related to Relocation.
Public Instance Methods
(_Repository repository) → Relocation::Entry
Source
# File lib/prism/node.rb, line 27780 def save_operator_loc(repository) repository.enter(node_id, :operator_loc) end
Save the operator_loc location using the given saved source so that it can be retrieved later.
Slicing
Public Instance Methods
() → String
Source
# File lib/prism/node.rb, line 27792 def operator operator_loc.slice end
Slice the location of operator_loc from the source.