Ruby 2.4

OptionParser::Arguable

module OptionParser::Arguable

扩展命令行参数数组(ARGV)来解析它自己。

公共类方法

extend_object(obj) Show source

初始化实例变量。

调用超类方法

# File lib/optparse.rb, line 2129 def self.extend_object(obj) super obj.instance_eval {@optparse = nil} end

new(*args) Show source

调用超类方法

# File lib/optparse.rb, line 2133 def initialize(*args) super @optparse = nil end

公共实例方法

getopts(*args) Show source

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 2122 def getopts(*args) options.getopts(self, *args) end

options() { |optparse| ... } Show source

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

如果使用块调用,则产生OptionParser对象并返回块的结果。如果在块中发生OptionParser :: ParseError异常,它将被解救,将打印到STDERR并nil返回的错误消息。

# File lib/optparse.rb, line 2081 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) Show source

设置OptionParser对象,当optfalse或时nil,方法#options和#options =未定义。因此,没有办法通过接收器对象访问OptionParser对象。

# File lib/optparse.rb, line 2064 def options=(opt) unless @optparse = opt class << self undef_method(:options) undef_method(:options=) end end end

order!(&blk) Show source

self按顺序破坏性地进行分析,并返回self包含其余参数未解析的返回值。

# File lib/optparse.rb, line 2097 def order!(&blk) options.order!(self, &blk) end

parse!() Show source

self破坏性地解析并返回self包含剩余未解析的参数。

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

permute!() Show source

self以置换模式进行破坏性分析,并返回self包含未解析的剩余参数。

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