# class Ripper::Filter

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

### Public Class Methods

new (src, filename = '-', lineno = 1)
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

Creates a new `Ripper::Filter` instance, passes parameters `src`, `filename`, and `lineno` to `Ripper::Lexer.new`

The lexer is for internal use only.

### Public Instance Methods

column ()
Source

    # File ext/ripper/lib/ripper/filter.rb, line 46
    def column
      @__col
    end

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

filename ()
Source

    # File ext/ripper/lib/ripper/filter.rb, line 32
    def filename
      @__lexer.filename
    end

The file name of the input.

lineno ()
Source

    # File ext/ripper/lib/ripper/filter.rb, line 39
    def lineno
      @__line
    end

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

parse (init = nil)
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

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

state ()
Source

    # File ext/ripper/lib/ripper/filter.rb, line 52
    def state
      @__state
    end

The scanner’s state of the current token. This value is the bitwise OR of zero or more of the `Ripper::EXPR_*` constants.

### Private Instance Methods

on_default (event, token, data)
Source

    # File ext/ripper/lib/ripper/filter.rb, line 80
    def on_default(event, token, data)
      data
    end

This method is called when some event handler is undefined. `event` is :on_XXX, `token` is the scanned token, and `data` is a data accumulator.

The return value of this method is passed to the next event handler (as of `Enumerable#inject`).