class Prism::ConstantPathTargetNode
Представляет запись в постоянный путь в контексте, у которого нет явного значения.
Foo::Foo, Bar::Bar = baz ^^^^^^^^ ^^^^^^^^
Атрибуты
attr_reader parent: Prism::node?
Публичные методы класса
Исходный код
# File lib/prism/node.rb, line 5377 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
Инициализирует новый узел ConstantPathTargetNode.
Исходный код
# File lib/prism/node.rb, line 5471 def self.type :constant_path_target_node end
Возвращает символ, представляющий тип узла. См. ‘Node::type`.
Публичные методы экземпляра
Исходный код
# File lib/prism/node.rb, line 5477
def ===(other)
other.is_a?(ConstantPathTargetNode) &&
(parent === other.parent) &&
(name === other.name) &&
(delimiter_loc.nil? == other.delimiter_loc.nil?) &&
(name_loc.nil? == other.name_loc.nil?)
end Реализует проверку на равенство без учёта регистра для узла. Это фактически ==, но без сравнения значений местоположений. Местоположения проверяются только на наличие.
Исходный код
# File lib/prism/node.rb, line 5389 def accept(visitor) visitor.visit_constant_path_target_node(self) end
def accept: (Visitor visitor) -> void
Исходный код
# File lib/prism/node_ext.rb, line 243
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 Ранее в этом классе был дочерний узел, содержащий либо константное чтение, либо отсутствующий узел. Чтобы не вызывать ошибки, мы продолжаем предоставлять этот API.
Исходный код
# File lib/prism/node.rb, line 5394 def child_nodes [parent] end
def child_nodes: () -> Array[nil | Node]
Исходный код
# File lib/prism/node.rb, line 5406 def comment_targets [*parent, delimiter_loc, name_loc] #: Array[Prism::node | Location] end
def comment_targets: () -> Array[Node | Location]
Исходный код
# File lib/prism/node.rb, line 5399 def compact_child_nodes compact = [] #: Array[Prism::node] compact << parent if parent compact end
def compact_child_nodes: () -> Array
Исходный код
# File lib/prism/node.rb, line 5411 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
def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?parent: Prism::node?, ?name: Symbol?, ?delimiter_loc: Location, ?name_loc: Location) -> ConstantPathTargetNode
Исходный код
# File lib/prism/node.rb, line 5419
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 }
Исходный код
# File lib/prism/node.rb, line 5456 def delimiter delimiter_loc.slice end
def delimiter: () -> String
Исходный код
# File lib/prism/node.rb, line 5430 def delimiter_loc location = @delimiter_loc return location if location.is_a?(Location) @delimiter_loc = Location.new(source, location >> 32, location & 0xFFFFFFFF) end
attr_reader delimiter_loc: Location
Исходный код
# File lib/prism/node_ext.rb, line 236
def full_name
full_name_parts.join("::")
end Возвращает полное имя этого константного пути. Например: “Foo::Bar”
Исходный код
# File lib/prism/node_ext.rb, line 216
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 Возвращает список частей полного имени этого константного пути. Например: [:Foo, :Bar]
Исходный код
# File lib/prism/node.rb, line 5461 def inspect InspectVisitor.compose(self) end
def inspect -> String
Исходный код
Исходный код
# File lib/prism/node.rb, line 5438 def save_delimiter_loc(repository) repository.enter(node_id, :delimiter_loc) end
Сохраняет местоположение delimiter_loc с помощью указанного сохранённого источника, чтобы его можно было извлечь позже.
Исходный код
# File lib/prism/node.rb, line 5451 def save_name_loc(repository) repository.enter(node_id, :name_loc) end
Сохранить расположение name_loc с помощью предоставленного сохранённого источника, чтобы его можно было получить позднее.
Исходный код
# File lib/prism/node.rb, line 5466 def type :constant_path_target_node end
Возвращает символьное представление типа этого узла. См. ‘Node#type`.
Ruby Core © 1993–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.