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 25734 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 25855 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 25872 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 25839 def exclude_end? flags.anybits?(RangeFlags::EXCLUDE_END) end
… operator
Locations
Public Instance Methods
Source
# File lib/prism/node.rb, line 25883 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 25758 def accept(visitor) visitor.visit_range_node(self) end
See Node.accept.
Source
# File lib/prism/node.rb, line 25765 def child_nodes [left, right] end
See Node.child_nodes.
Source
# File lib/prism/node.rb, line 25793 def comment_targets [*left, *right, operator_loc] #: Array[Prism::node | Location] end
See Node.comment_targets.
Source
# File lib/prism/node.rb, line 25783 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 25803 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 25773 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 25894 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 25906 def operator operator_loc.slice end
Slice the location of operator_loc from the source.