diff options
Diffstat (limited to 'ext/ripper/lib/ripper/filter.rb')
-rw-r--r-- | ext/ripper/lib/ripper/filter.rb | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/ext/ripper/lib/ripper/filter.rb b/ext/ripper/lib/ripper/filter.rb new file mode 100644 index 0000000000..399c4c64bc --- /dev/null +++ b/ext/ripper/lib/ripper/filter.rb @@ -0,0 +1,55 @@ +# +# ripper/filter.rb +# +# Copyright (C) 2004 Minero Aoki +# +# This program is free software. +# You can distribute and/or modify this program under the Ruby License. +# For details of Ruby License, see ruby/COPYING. +# + +require 'ripper' + +class Ripper + + class Filter + + def initialize(src, filename = '-', lineno = 1) + @__parser = Tokenizer.new(src, filename, lineno) + @__line = nil + @__col = nil + end + + def filename + @__parser.filename + end + + def lineno + @__line + end + + def column + @__col + end + + def parse(init) + data = init + @__parser.parse.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 + + private + + def on_default(event, tok, data) + data + end + + end + +end |