Spec-Zone.ru › Ruby 3.3

class Prism::ParseResult::Newlines

Parent:
Visitor

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

  • операторы if

  • операторы unless

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

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

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

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

new(newline_marked) Показать исходный код
# File lib/prism/parse_result/newlines.rb, line 22
def initialize(newline_marked)
  @newline_marked = newline_marked
end

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

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

visit_block_node(node) Показать исходный код
# File lib/prism/parse_result/newlines.rb, line 27
def visit_block_node(node)
  old_newline_marked = @newline_marked
  @newline_marked = Array.new(old_newline_marked.size, false)

  begin
    super(node)
  ensure
    @newline_marked = old_newline_marked
  end
end

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

Вызывает метод суперкласса
Также алиасируется как: visit_lambda_node
visit_if_node(node) Показать исходный код
# File lib/prism/parse_result/newlines.rb, line 41
def visit_if_node(node)
  node.set_newline_flag(@newline_marked)
  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 49
def visit_statements_node(node)
  node.body.each do |child|
    child.set_newline_flag(@newline_marked)
  end
  super(node)
end

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

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

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

Spec-Zone.ru

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