Spec-Zone.ru › Ruby 3.4
  1. Ripper::
  2. Filter

класс Ripper::Filter

Родитель:
Object

Этот класс обрабатывает только события сканера, которые вызываются в «правильном» порядке (в том же порядке, что и во входных данных).

Открытые методы класса

new (src, filename = '-', lineno = 1) Показать исходный код
# File ext/ripper/lib/ripper/filter.rb, line 24
def initialize(src, filename = '-', lineno = 1)
  @__lexer = Lexer.new(src, filename, lineno)
  @__line = nil
  @__col = nil
  @__state = nil
end

Создаёт новый экземпляр Ripper::Filter, передаёт параметры src, filename и lineno в Ripper::Lexer.new

Лексический анализатор предназначен только для внутреннего использования.

Открытые методы экземпляра

column () Показать исходный код
# File ext/ripper/lib/ripper/filter.rb, line 46
def column
  @__col
end

Номер столбца текущего токена. Отсчёт начинается с 0. Этот метод действителен только в обработчиках событий.

filename () Показать исходный код
# File ext/ripper/lib/ripper/filter.rb, line 32
def filename
  @__lexer.filename
end

Имя файла входных данных.

lineno () Показать исходный код
# File ext/ripper/lib/ripper/filter.rb, line 39
def lineno
  @__line
end

Номер строки текущего токена. Отсчёт начинается с 1. Этот метод действителен только в обработчиках событий.

parse (init = nil) Показать исходный код
# File ext/ripper/lib/ripper/filter.rb, line 59
def parse(init = nil)
  data = init
  @__lexer.lex.each do |pos, event, tok, state|
    @__line, @__col = *pos
    @__state = state
    data = if respond_to?(event, true)
           then __send__(event, tok, data)
           else on_default(event, tok, data)
           end
  end
  data
end

Запускает синтаксический анализатор. init — это накопитель данных, который передаётся следующему обработчику событий (как в Enumerable#inject).

state () Показать исходный код
# File ext/ripper/lib/ripper/filter.rb, line 52
def state
  @__state
end

Состояние сканера для текущего токена. Это значение представляет собой побитовое ИЛИ нуля или более констант Ripper::EXPR_*.

Закрытые методы экземпляра

on_default (event, token, data) Показать исходный код
# File ext/ripper/lib/ripper/filter.rb, line 80
def on_default(event, token, data)
  data
end

Этот метод вызывается, если обработчик какого-либо события не определён. event — это :on_XXX, token — просканированный токен, а data — накопитель данных.

Возвращаемое этим методом значение передаётся следующему обработчику событий (как в Enumerable#inject).

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

Spec-Zone.ru

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