123456789_123456789_123456789_123456789_123456789_

Class: Ripper::Filter

Relationships & Source Files
Inherits: Object
Defined in: ext/ripper/lib/ripper/filter.rb

Overview

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

Class Method Summary

Instance Method Summary

Constructor Details

.new(src, filename = '-', lineno = 1) ⇒ Filter

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

The lexer is for internal use only.

[ GitHub ]

  
# 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

Instance Method Details

#column

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

[ GitHub ]

  
# File 'ext/ripper/lib/ripper/filter.rb', line 46

def column
  @__col
end

#filename

The file name of the input.

[ GitHub ]

  
# File 'ext/ripper/lib/ripper/filter.rb', line 32

def filename
  @__lexer.filename
end

#lineno

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

[ GitHub ]

  
# File 'ext/ripper/lib/ripper/filter.rb', line 39

def lineno
  @__line
end

#on_default(event, token, data) (private)

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).

[ GitHub ]

  
# File 'ext/ripper/lib/ripper/filter.rb', line 80

def on_default(event, token, data)
  data
end

#parse(init = nil)

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

[ GitHub ]

  
# 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

#state

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

[ GitHub ]

  
# File 'ext/ripper/lib/ripper/filter.rb', line 52

def state
  @__state
end