首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Ripper::Filter

Parent:Object

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

公共类方法

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

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

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

代码语言:javascript
复制
# 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开始。此方法仅在事件处理程序中有效。

代码语言:javascript
复制
# File ext/ripper/lib/ripper/filter.rb, line 44
def column
  @__col
end

filename() Show source

输入的文件名。

代码语言:javascript
复制
# File ext/ripper/lib/ripper/filter.rb, line 30
def filename
  @__lexer.filename
end

lineno() Show source

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

代码语言:javascript
复制
# File ext/ripper/lib/ripper/filter.rb, line 37
def lineno
  @__line
end

parse(init = nil) Show source

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

代码语言:javascript
复制
# 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开始)。

代码语言:javascript
复制
# File ext/ripper/lib/ripper/filter.rb, line 71
def on_default(event, token, data)
  data
end

扫码关注腾讯云开发者

领取腾讯云代金券