Class: Ripper::Filter

Inherits:
Object show all
Defined in:
lib/langscan/ruby/compat/ripper/filter.rb

Overview

This class handles only scanner events, and they are dispatched in the ‘right’ order (same with input).

Instance Method Summary collapse

Constructor Details

#initialize(src, filename = '-', lineno = 1) ⇒ Filter

Returns a new instance of Filter.



19
20
21
22
23
# File 'lib/langscan/ruby/compat/ripper/filter.rb', line 19

def initialize(src, filename = '-', lineno = 1)
  @__lexer = Lexer.new(src, filename, lineno)
  @__line = nil
  @__col = nil
end

Instance Method Details

#columnObject

The column number of the current token. This value starts from 0. This method is valid only in event handlers.



40
41
42
# File 'lib/langscan/ruby/compat/ripper/filter.rb', line 40

def column
  @__col
end

#filenameObject

The file name of the input.



26
27
28
# File 'lib/langscan/ruby/compat/ripper/filter.rb', line 26

def filename
  @__lexer.filename
end

#linenoObject

The line number of the current token. This value starts from 1. This method is valid only in event handlers.



33
34
35
# File 'lib/langscan/ruby/compat/ripper/filter.rb', line 33

def lineno
  @__line
end

#parse(init = nil) ⇒ Object

Starts parsing. init is a data accumulator. It is passed to the next event handler (as of Enumerable#inject).



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/langscan/ruby/compat/ripper/filter.rb', line 46

def parse(init = nil)
  data = init
  @__lexer.lex.each do |pos, event, tok|
    @__line, @__col = *pos
    data = if respond_to?(event, true)
           then __send__(event, tok, data)
           else on_default(event, tok, data)
           end
  end
  data
end