diff options
Diffstat (limited to 'ext/ripper/lib/ripper/filter.rb')
-rw-r--r-- | ext/ripper/lib/ripper/filter.rb | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/ext/ripper/lib/ripper/filter.rb b/ext/ripper/lib/ripper/filter.rb index 455197f690..9955d30550 100644 --- a/ext/ripper/lib/ripper/filter.rb +++ b/ext/ripper/lib/ripper/filter.rb @@ -25,6 +25,7 @@ class Ripper @__lexer = Lexer.new(src, filename, lineno) @__line = nil @__col = nil + @__state = nil end # The file name of the input. @@ -46,13 +47,20 @@ class Ripper @__col end + # The scanner's state of the current token. + # This value is the bitwise OR of zero or more of the +Ripper::EXPR_*+ constants. + def state + @__state + end + # Starts the parser. # +init+ is a data accumulator and is passed to the next event handler (as # of Enumerable#inject). def parse(init = nil) data = init - @__lexer.lex.each do |pos, event, tok| + @__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) |