类 OptionParser::List
简单的选项列表,提供从短选项或长选项字符串到 OptionParser::Switch
的映射,以及从可接受的参数到匹配模式和转换器对的映射。还提供摘要功能。
属性
atype[R]
从可接受的参数类型到模式和转换器对的映射。
list[R]
所有开关和摘要字符串的 List
。
long[R]
从长格式选项开关到实际开关对象的映射。
short[R]
从短格式选项开关到实际开关对象的映射。
公共类方法
new() 点击切换源代码
只初始化所有实例变量。
# File lib/optparse.rb, line 816 def initialize @atype = {} @short = OptionMap.new @long = OptionMap.new @list = [] end
公共实例方法
accept(t, pat = /.*/m, &block) 点击切换源代码
# File lib/optparse.rb, line 837 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) 点击切换源代码
将 switch
附加到列表的尾部,并关联短选项、长选项和否定长选项。参数为
switch
-
要插入的
OptionParser::Switch
实例。 short_opts
-
短格式选项的
List
。 long_opts
-
长格式选项的
List
。 nolong_opts
-
带有“no-”前缀的长格式选项的
List
。
append(switch, short_opts, long_opts, nolong_opts)
# File lib/optparse.rb, line 901 def append(*args) update(*args) @list.push(args[0]) end
complete(id, opt, icase = false, *pat, &block) 点击切换源代码
在 id
列表中搜索 opt
和可选的补全模式 pat
。如果 icase
为真,则搜索不区分大小写。如果给定代码块,则返回或生成结果。如果未找到,则返回 nil。
# File lib/optparse.rb, line 923 def complete(id, opt, icase = false, *pat, &block) __send__(id).complete(opt, icase, *pat, &block) end
each_option(&block) 点击切换源代码
遍历每个选项,将选项传递给 block
。
# File lib/optparse.rb, line 934 def each_option(&block) list.each(&block) end
get_candidates(id) { |__send__(id).keys| ... } 点击切换源代码
# File lib/optparse.rb, line 927 def get_candidates(id) yield __send__(id).keys end
prepend(*args) 点击切换源代码
将 switch
插入列表的开头,并关联短选项、长选项和否定长选项。参数为
switch
-
要插入的
OptionParser::Switch
实例。 short_opts
-
短格式选项的
List
。 long_opts
-
长格式选项的
List
。 nolong_opts
-
带有“no-”前缀的长格式选项的
List
。
prepend(switch, short_opts, long_opts, nolong_opts)
# File lib/optparse.rb, line 885 def prepend(*args) update(*args) @list.unshift(args[0]) end
reject(t) 点击切换源代码
# File lib/optparse.rb, line 853 def reject(t) @atype.delete(t) end
search(id, key) { |val| ... } 点击切换源代码
在 id
列表中搜索 key
。如果给定代码块,则返回或生成结果。如果未找到,则返回 nil。
# File lib/optparse.rb, line 910 def search(id, key) if list = __send__(id) val = list.fetch(key) {return nil} block_given? ? yield(val) : val end end
summarize(*args, &block) 点击切换源代码
创建摘要表,将每行传递给 block
(不带换行符)。参数 args
传递给每个选项调用的 summarize 方法。
# File lib/optparse.rb, line 943 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