class Prism::RangeNode
Represents the use of the .. or ... operators.
1..2
^^^^
c if a =~ /left/ ... b =~ /right/
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Public Class Methods
Source
# File lib/prism/node.rb, line 25679 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
Source
# File lib/prism/node.rb, line 25800 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 ^^^^^
Source
# File lib/prism/node.rb, line 25817 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
^^^
If neither right-hand or left-hand side was included, this will be a MissingNode.
Flags
Public Instance Methods
Source
# File lib/prism/node.rb, line 25784 def exclude_end? flags.anybits?(RangeFlags::EXCLUDE_END) end
… operator
Locations
Public Instance Methods
Source
# File lib/prism/node.rb, line 25828 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
Source
# File lib/prism/node.rb, line 25703 def accept(visitor) visitor.visit_range_node(self) end
See Node.accept.
Source
# File lib/prism/node.rb, line 25710 def child_nodes [left, right] end
See Node.child_nodes.
Source
# File lib/prism/node.rb, line 25738 def comment_targets [*left, *right, operator_loc] #: Array[Prism::node | Location] end
See Node.comment_targets.
Source
# File lib/prism/node.rb, line 25728 def compact_child_nodes compact = [] #: Array[Prism::node] if (left = self.left); compact << left; end if (right = self.right); compact << right; end compact end
Source
# File lib/prism/node.rb, line 25748 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.
Source
# File lib/prism/node.rb, line 25718 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
Source
# File lib/prism/node.rb, line 25839 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
Source
# File lib/prism/node.rb, line 25851 def operator operator_loc.slice end
Slice the location of operator_loc from the source.