class Ripper::Filter
This class handles only scanner events, which are dispatched in the 'right' order (same with input).
Public Class Methods
# File ext/ripper/lib/ripper/filter.rb, line 23 def initialize(src, filename = '-', lineno = 1) @__lexer = Lexer.new(src, filename, lineno) @__line = nil @__col = 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
# File ext/ripper/lib/ripper/filter.rb, line 44 def column @__col end
The column number of the current token. This value starts from 0. This method is valid only in event handlers.
# File ext/ripper/lib/ripper/filter.rb, line 30 def filename @__lexer.filename end
The file name of the input.
# File ext/ripper/lib/ripper/filter.rb, line 37 def lineno @__line end
The line number of the current token. This value starts from 1. This method is valid only in event handlers.
# File ext/ripper/lib/ripper/filter.rb, line 51
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 Starts the parser. init is a data accumulator and is passed to the next event handler (as of Enumerable#inject).
Private Instance Methods
# File ext/ripper/lib/ripper/filter.rb, line 71 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).
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.