Ruby 2.4

Ripper::Filter

Ripper :: Filter类

Parent:Object

该类只处理扫描仪事件,这些事件按“正确”顺序(与输入相同)分派。

公共类方法

new(src, filename = '-', lineno = 1) Show source

创建一个新的Ripper :: Filter实例,将参数src,filename和lineno传递给Ripper :: Lexer.new

词法分析器仅供内部使用。

# 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

公共实例方法

column() Show source

当前令牌的列号。该值从0开始。此方法仅在事件处理程序中有效。

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

filename() Show source

输入的文件名。

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

lineno() Show source

当前令牌的行号。该值从1开始。此方法仅在事件处理程序中有效。

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

parse(init = nil) Show source

启动解析器。 init是一个数据累加器,并传递给下一个事件处理程序(从Enumerable#inject开始)。

# 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

私有实例方法

on_default(event, token, data) Show source

当某些事件处理程序未定义时调用此方法。 事件是:on_XXX,令牌是扫描的令牌,数据是数据累加器。

此方法的返回值传递给下一个事件处理程序(从Enumerable#inject开始)。

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