class Prism::ConstantPathTargetNode
Represents writing to a constant path in a context that doesn’t have an explicit value.
Foo::Foo, Bar::Bar = baz ^^^^^^^^ ^^^^^^^^
Public Class Methods
Source
# File lib/prism/node.rb, line 7267 def initialize(source, node_id, location, flags, parent, name, delimiter_loc, name_loc) @source = source @node_id = node_id @location = location @flags = flags @parent = parent @name = name @delimiter_loc = delimiter_loc @name_loc = name_loc end
Initialize a new ConstantPathTargetNode node.
Public Instance Methods
Source
# File lib/prism/node_ext.rb, line 246 def child deprecated("name", "name_loc") if name ConstantReadNode.new(source, -1, name_loc, 0, name) else MissingNode.new(source, -1, location, 0) end end
Previously, we had a child node on this class that contained either a constant read or a missing node. To not cause a breaking change, we continue to supply that API.
Source
# File lib/prism/node_ext.rb, line 239 def full_name full_name_parts.join("::") end
Returns the full name of this constant path. For example: “Foo::Bar”
Source
# File lib/prism/node_ext.rb, line 219 def full_name_parts parts = case parent when ConstantPathNode, ConstantReadNode parent.full_name_parts when nil [:""] else # e.g. self::Foo, (var)::Bar = baz raise ConstantPathNode::DynamicPartsInConstantPathError, "Constant target path contains dynamic parts. Cannot compute full name" end if name.nil? raise ConstantPathNode::MissingNodesInConstantPathError, "Constant target path contains missing nodes. Cannot compute full name" end parts.push(name) end
Returns the list of parts for the full name of this constant path. For example: [:Foo, :Bar]
Source
# File lib/prism/node.rb, line 7360 def name @name end
Returns the name attribute.
Source
# File lib/prism/node.rb, line 7352 def parent @parent end
Returns the parent attribute.
Locations
Public Instance Methods
Source
# File lib/prism/node.rb, line 7369 def delimiter_loc location = @delimiter_loc return location if location.is_a?(Location) @delimiter_loc = Location.new(source, location >> 32, location & 0xFFFFFFFF) end
Returns the Location represented by delimiter_loc.
Source
# File lib/prism/node.rb, line 7387 def name_loc location = @name_loc return location if location.is_a?(Location) @name_loc = Location.new(source, location >> 32, location & 0xFFFFFFFF) end
Node Interface
Public Class Methods
Public Instance Methods
Source
# File lib/prism/node.rb, line 7290 def accept(visitor) visitor.visit_constant_path_target_node(self) end
See Node.accept.
Source
# File lib/prism/node.rb, line 7295 def child_nodes [parent] end
See Node.child_nodes.
Source
# File lib/prism/node.rb, line 7314 def comment_targets [*parent, delimiter_loc, name_loc] #: Array[Prism::node | Location] end
See Node.comment_targets.
Source
# File lib/prism/node.rb, line 7307 def compact_child_nodes compact = [] #: Array[Prism::node] compact << parent if parent compact end
Source
# File lib/prism/node.rb, line 7322 def copy(node_id: self.node_id, location: self.location, flags: self.flags, parent: self.parent, name: self.name, delimiter_loc: self.delimiter_loc, name_loc: self.name_loc) ConstantPathTargetNode.new(source, node_id, location, flags, parent, name, delimiter_loc, name_loc) end
Creates a copy of self with the given fields, using self as the template.
Source
# File lib/prism/node.rb, line 7300 def each_child_node return to_enum(:each_child_node) unless block_given? yield parent if parent end
See Node.each_child_node.
Repository
Public Instance Methods
Source
# File lib/prism/node.rb, line 7378 def save_delimiter_loc(repository) repository.enter(node_id, :delimiter_loc) end
Save the delimiter_loc location using the given saved source so that it can be retrieved later.
Source
# File lib/prism/node.rb, line 7396 def save_name_loc(repository) repository.enter(node_id, :name_loc) end
Save the name_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 7406 def delimiter delimiter_loc.slice end
Slice the location of delimiter_loc from the source.