class Prism::ConstantPathNode
Stellt den Zugriff auf eine Konstante über einen Pfad von ::-Operatoren dar.
Foo::Bar ^^^^^^^^
Attribute
Der Name der Konstante, auf die zugegriffen wird. Dies kann nil im Falle eines Syntaxfehlers sein.
Der linke Knoten des Pfads, falls vorhanden. Es kann nil oder jeder nicht-leere Ausdruck sein. Es wird nil sein, wenn die Konstanten-Suche am Wurzel des Modulbaums stattfindet.
Foo::Bar ^^^ self::Test ^^^^ a.b::C ^^^
Öffentliche Klassenmethoden
Source
# File lib/prism/node.rb, line 5107 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
Initialisiert einen neuen ConstantPathNode-Knoten.
Source
# File lib/prism/node.rb, line 5222 def self.type :constant_path_node end
Gibt eine symbolische Darstellung dieses Knotentyps zurück. Siehe Node::type.
Öffentliche Instanzmethoden
Source
# File lib/prism/node.rb, line 5228 def ===(other) other.is_a?(ConstantPathNode) && (parent === other.parent) && (name === other.name) && (delimiter_loc.nil? == other.delimiter_loc.nil?) && (name_loc.nil? == other.name_loc.nil?) end
Implementiert die Fallgleichheit für den Knoten. Dies ist effektiv ==, aber ohne den Wert von Standorten zu vergleichen. Standorte werden nur auf Anwesenheit geprüft.
Source
# File lib/prism/node.rb, line 5119 def accept(visitor) visitor.visit_constant_path_node(self) end
def accept: (Visitor visitor) -> void
Source
# File lib/prism/node_ext.rb, line 205 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
Zuvor hatten wir einen Kindknoten in dieser Klasse, der entweder eine Konstantenlesung oder einen fehlenden Knoten enthielt. Um keine brüchige Änderung zu verursachen, stellen wir diese API weiterhin bereit.
Source
# File lib/prism/node.rb, line 5124 def child_nodes [parent] end
def child_nodes: () -> Array
Source
# File lib/prism/node.rb, line 5136 def comment_targets [*parent, delimiter_loc, name_loc] #: Array[Prism::node | Location] end
def comment_targets: () -> Array[Node | Location]
Source
# File lib/prism/node.rb, line 5129 def compact_child_nodes compact = [] #: Array[Prism::node] compact << parent if parent compact end
def compact_child_nodes: () -> Array
Source
# File lib/prism/node.rb, line 5141 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) ConstantPathNode.new(source, node_id, location, flags, parent, name, delimiter_loc, name_loc) end
Source
# File lib/prism/node.rb, line 5149 def deconstruct_keys(keys) { node_id: node_id, location: location, parent: parent, name: name, delimiter_loc: delimiter_loc, name_loc: name_loc } end
def deconstruct_keys: (Array keys) -> { node_id: Integer, location: Location, parent: Prism::node?, name: Symbol?, delimiter_loc: Location, name_loc: Location }
Source
# File lib/prism/node.rb, line 5207 def delimiter delimiter_loc.slice end
def delimiter: () -> String
Source
# File lib/prism/node.rb, line 5175 def delimiter_loc location = @delimiter_loc return location if location.is_a?(Location) @delimiter_loc = Location.new(source, location >> 32, location & 0xFFFFFFFF) end
Der Speicherort des ::-Delimiters.
::Foo ^^ One::Two ^^
Source
# File lib/prism/node_ext.rb, line 198 def full_name full_name_parts.join("::") end
Gibt den vollständigen Namen dieses konstanten Pfads zurück. Zum Beispiel: “Foo::Bar”
Source
# File lib/prism/node_ext.rb, line 176 def full_name_parts parts = [] #: Array[Symbol] current = self #: node? while current.is_a?(ConstantPathNode) name = current.name if name.nil? raise MissingNodesInConstantPathError, "Constant path contains missing nodes. Cannot compute full name" end parts.unshift(name) current = current.parent end if !current.is_a?(ConstantReadNode) && !current.nil? raise DynamicPartsInConstantPathError, "Constant path contains dynamic parts. Cannot compute full name" end parts.unshift(current&.name || :"") end
Gibt die Liste der Teile für den vollständigen Namen dieses konstanten Pfads zurück. Zum Beispiel: [:Foo, :Bar]
Source
# File lib/prism/node.rb, line 5212 def inspect InspectVisitor.compose(self) end
def inspect -> String
Source
# File lib/prism/node.rb, line 5194 def name_loc location = @name_loc return location if location.is_a?(Location) @name_loc = Location.new(source, location >> 32, location & 0xFFFFFFFF) end
Der Speicherort des Namens der Konstante.
::Foo
^^^
One::Two
^^^
Source
# File lib/prism/node.rb, line 5183 def save_delimiter_loc(repository) repository.enter(node_id, :delimiter_loc) end
Speichert den Speicherort delimiter_loc unter Verwendung der gegebenen gespeicherten Quelle, damit er später abgerufen werden kann.
Source
# File lib/prism/node.rb, line 5202 def save_name_loc(repository) repository.enter(node_id, :name_loc) end
Speichert den Speicherort name_loc unter Verwendung der gegebenen gespeicherten Quelle, damit er später abgerufen werden kann.