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 27167 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 27299 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 27316 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 an ErrorRecoveryNode.
Flags
Public Instance Methods
Source
# File lib/prism/node.rb, line 27283 def exclude_end? flags.anybits?(RangeFlags::EXCLUDE_END) end
… operator
Locations
Public Instance Methods
Source
# File lib/prism/node.rb, line 27327 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 27191 def accept(visitor) visitor.visit_range_node(self) end
See Node.accept.
Source
# File lib/prism/node.rb, line 27198 def child_nodes [left, right] end
See Node.child_nodes.
Source
# File lib/prism/node.rb, line 27226 def comment_targets [*left, *right, operator_loc] #: Array[Prism::node | Location] end
See Node.comment_targets.
Source
# File lib/prism/node.rb, line 27216 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 27236 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 27206 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 27338 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 27350 def operator operator_loc.slice end
Slice the location of operator_loc from the source.