模块 OptionParser::Arguable

扩展命令行参数数组 (ARGV) 以便解析自身。

公共类方法

extend_object(obj) 点击切换源代码

初始化实例变量。

调用超类方法
# File lib/optparse.rb, line 2308
def self.extend_object(obj)
  super
  obj.instance_eval {@optparse = nil}
end
new(*args) 点击切换源代码
调用超类方法
# File lib/optparse.rb, line 2312
def initialize(*args)
  super
  @optparse = nil
end

公共实例方法

getopts(*args, symbolize_names: false) 点击切换源代码

可以按如下方式替换 getopts。另请参见 OptionParser#getopts

def getopts(*args)
  ($OPT = ARGV.getopts(*args)).each do |opt, val|
    eval "$OPT_#{opt.gsub(/[^A-Za-z0-9_]/, '_')} = val"
  end
rescue OptionParser::ParseError
end
# File lib/optparse.rb, line 2301
def getopts(*args, symbolize_names: false)
  options.getopts(self, *args, symbolize_names: symbolize_names)
end
options() { |optparse| ... } 点击切换源代码

实际的 OptionParser 对象,如果不存在则自动创建。

如果使用块调用,则会产生 OptionParser 对象并返回块的结果。如果块中出现 OptionParser::ParseError 异常,则会将其捕获,将错误消息打印到 STDERR 并返回 nil

# File lib/optparse.rb, line 2260
def options
  @optparse ||= OptionParser.new
  @optparse.default_argv = self
  block_given? or return @optparse
  begin
    yield @optparse
  rescue ParseError
    @optparse.warn $!
    nil
  end
end
options=(opt) 点击切换源代码

设置 OptionParser 对象,当 optfalsenil 时,方法 OptionParser::Arguable#optionsOptionParser::Arguable#options= 将被取消定义。因此,无法通过接收器对象访问 OptionParser 对象。

# File lib/optparse.rb, line 2243
def options=(opt)
  unless @optparse = opt
    class << self
      undef_method(:options)
      undef_method(:options=)
    end
  end
end
order!(&blk) 点击切换源代码

按顺序解析 self,并返回包含未解析的剩余参数的 self

# File lib/optparse.rb, line 2276
def order!(&blk) options.order!(self, &blk) end
parse!() 点击切换源代码

解析 self,并返回包含未解析的剩余参数的 self

# File lib/optparse.rb, line 2288
def parse!() options.parse!(self) end
permute!() 点击切换源代码

以排列模式解析 self,并返回包含未解析的剩余参数的 self

# File lib/optparse.rb, line 2282
def permute!() options.permute!(self) end