Spec-Zone.ru › Ruby 3.4

класс Prism::ParseResult::Newlines

Событие :line tracepoint срабатывает всякий раз, когда интерпретатор Ruby сталкивается с выражением на новой строке. Виды выражений, которые могут вызвать это событие:

  • условные операторы if

  • условные операторы unless

  • узлы, являющиеся дочерними узлами списков операторов

Для отслеживания новых строк у нас есть список смещений, возвращаемых парсером. Эти смещения присваиваются первым узлам в дереве, которые находятся на этих строках.

Обратите внимание, что логика в этом файле должна быть согласована с Java MarkNewlinesVisitor, поскольку этот посетитель отвечает за маркировку новых строк для JRuby/TruffleRuby.

Этот файл загружается автоматически только при вызове «mark_newlines!», поэтому повторное открытие различных узлов в этом файле будет выполняться только в этом случае. Это делается для того, чтобы не хранить дополнительную переменную экземпляра `@newline` в каждом узле, если она не нужна.

Публичные методы класса

new (lines)
Исходный код
# File lib/prism/parse_result/newlines.rb, line 27
def initialize(lines)
  # @type var lines: Integer
  @lines = Array.new(1 + lines, false)
end

Создает нового посетителя Newlines с заданными смещениями новых строк.

Публичные методы экземпляра

visit_block_node (node)
Исходный код
# File lib/prism/parse_result/newlines.rb, line 33
def visit_block_node(node)
  old_lines = @lines
  @lines = Array.new(old_lines.size, false)

  begin
    super(node)
  ensure
    @lines = old_lines
  end
end

Разрешить узлам блоков/лямбда-выражений маркировать новые строки внутри себя.

Вызывает метод суперкласса
Также алиас: visit_lambda_node
visit_if_node (node)
Исходный код
# File lib/prism/parse_result/newlines.rb, line 47
def visit_if_node(node)
  node.newline_flag!(@lines)
  super(node)
end

Помечать узлы if/unless как новые строки.

Вызывает метод суперкласса
Также алиас: visit_unless_node
visit_lambda_node (node)
Псевдоним для: visit_block_node
visit_statements_node (node)
Исходный код
# File lib/prism/parse_result/newlines.rb, line 55
def visit_statements_node(node)
  node.body.each do |child|
    child.newline_flag!(@lines)
  end
  super(node)
end

Разрешить спискам операторов маркировать новые строки внутри себя.

Вызывает метод суперкласса
visit_unless_node (node)
Псевдоним для: visit_if_node

Ruby Core © 1993–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API