class Ripper::Filter
Diese Klasse behandelt nur Scanner-Ereignisse, die in der „richtigen“ Reihenfolge (wie die Eingabe) ausgeliefert werden.
Öffentliche Klassenmethoden
Source
# 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
Erzeugt eine neue Ripper::Filter-Instanz. Übergibt die Parameter src, filename und lineno an Ripper::Lexer.new.
Der Lexer ist nur für den internen Gebrauch bestimmt.
Öffentliche Instanzmethoden
Source
# File ext/ripper/lib/ripper/filter.rb, line 46 def column @__col end
Die Spaltennummer des aktuellen Tokens. Dieser Wert beginnt bei 0. Diese Methode ist nur in Event-Handlern gültig.
Source
# File ext/ripper/lib/ripper/filter.rb, line 32 def filename @__lexer.filename end
Der Dateiname der Eingabe.
Source
# File ext/ripper/lib/ripper/filter.rb, line 39 def lineno @__line end
Die Zeilennummer des aktuellen Tokens. Dieser Wert beginnt bei 1. Diese Methode ist nur in Event-Handlern gültig.
Source
# 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
Startet den Parser. init ist ein Datenakkumulator und wird an den nächsten Event-Handler übergeben (gemäß Enumerable#inject).
Source
# File ext/ripper/lib/ripper/filter.rb, line 52 def state @__state end
Der Zustand des Scanners des aktuellen Tokens. Dieser Wert ist das bitweise OR von null oder mehr der Ripper::EXPR_*-Konstanten.
Private Instanzmethoden
Source
# File ext/ripper/lib/ripper/filter.rb, line 80 def on_default(event, token, data) data end
Diese Methode wird aufgerufen, wenn ein Event-Handler undefiniert ist. event ist :on_XXX, token ist das gescannte Token und data ist ein Datenakkumulator.
Der Rückgabewert dieser Methode wird an den nächsten Event-Handler übergeben (gemäß Enumerable#inject).