Ruby 2.4

OptionParser::List

class OptionParser::List

父类:Object

简单的选项列表,提供从短和/或长选项字符串到OptionParser :: Switch的映射,以及从可接受参数到匹配模式和转换器对的映射。还提供汇总功能。

属性

atypeR

从可接受的参数类型映射到模式和转换器对。

listR

所有开关和摘要字符串的列表。

longR

从长式选项开关映射到实际的开关对象。

shortR

从短风格选项开关映射到实际开关对象。

公共类方法

new() Show source

只需初始化所有实例变量。

# File lib/optparse.rb, line 741 def initialize @atype = {} @short = OptionMap.new @long = OptionMap.new @list = [] end

公共实例方法

accept(t, pat = /.*/m, &block) Show source

请参阅OptionParser#accept。

# File lib/optparse.rb, line 751 def accept(t, pat = /.*/m, &block) if pat pat.respond_to?(:match) or raise TypeError, "has no `match'", ParseError.filter_backtrace(caller(2)) else pat = t if t.respond_to?(:match) end unless block block = pat.method(:convert).to_proc if pat.respond_to?(:convert) end @atype[t] = [pat, block] end

append(*args) Show source

附加switch在列表的尾部,并关联短期,长期和否定的多头期权。参数是:

switch

OptionParser :: Switch实例被插入。

short_opts

短式选项列表。

long_opts

长式选项列表。

nolong_opts

带有“no-”前缀的长式选项列表。

append(switch, short_opts, long_opts, nolong_opts)

# File lib/optparse.rb, line 815 def append(*args) update(*args) @list.push(args[0]) end

complete(id, opt, icase = false, *pat, &block) Show source

搜索列表idopt和完成的可选模式pat。如果icase是,则搜索不区分大小写。如果给出了块,结果会返回或产生。如果找不到,则返回nil。

# File lib/optparse.rb, line 837 def complete(id, opt, icase = false, *pat, &block) __send__(id).complete(opt, icase, *pat, &block) end

each_option(&block) Show source

迭代每个选项,将选项传递给block

# File lib/optparse.rb, line 844 def each_option(&block) list.each(&block) end

prepend(*args) Show source

插入switch名单的头部,并将短的,长的和否定的长期选项联系起来。参数是:

switch

OptionParser :: Switch实例被插入。

short_opts

短式选项列表。

long_opts

长式选项列表。

nolong_opts

带有“no-”前缀的长式选项列表。

prepend(switch, short_opts, long_opts, nolong_opts)

# File lib/optparse.rb, line 799 def prepend(*args) update(*args) @list.unshift(args[0]) end

reject(t) Show source

请参阅OptionParser#拒绝。

# File lib/optparse.rb, line 767 def reject(t) @atype.delete(t) end

search(id, key) { |val| ... } Show source

keyid列表中搜索。如果给出了块,结果会返回或产生。如果找不到,则返回nil。

# File lib/optparse.rb, line 824 def search(id, key) if list = __send__(id) val = list.fetch(key) {return nil} block_given? ? yield(val) : val end end

summarize(*args, &block) Show source

创建汇总表,将每行传递给block(不含换行符)。参数args传递给在每个选项上调用的汇总方法。

# File lib/optparse.rb, line 853 def summarize(*args, &block) sum = [] list.reverse_each do |opt| if opt.respond_to?(:summarize) # perhaps OptionParser::Switch s = [] opt.summarize(*args) {|l| s << l} sum.concat(s.reverse) elsif !opt or opt.empty? sum << "" elsif opt.respond_to?(:each_line) sum.concat([*opt.each_line].reverse) else sum.concat([*opt.each].reverse) end end sum.reverse_each(&block) end

私有实例方法

update(sw, sopts, lopts, nsw = nil, nlopts = nil) Show source

增加了sw根据soptsloptsnlopts

sw

OptionParser :: Switch实例被添加。

sopts

短选项列表。

lopts

长选项列表。

nlopts

取消长时间选项列表。

# File lib/optparse.rb, line 779 def update(sw, sopts, lopts, nsw = nil, nlopts = nil) sopts.each {|o| @short[o] = sw} if sopts lopts.each {|o| @long[o] = sw} if lopts nlopts.each {|o| @long[o] = nsw} if nsw and nlopts used = @short.invert.update(@long.invert) @list.delete_if {|o| Switch === o and !used[o]} end