Spec-Zone.ru › Ruby 2.6

класс OptionParser::List

Родитель:
Объект

Простой список опций, предоставляющий отображение от короткой и/или длинной строки опции к OptionParser::Switch и отображение от допустимого аргумента к соответствующей паре шаблона и преобразователя. Также предоставляет функцию сводки.

Атрибуты

atype[R]

Отображение от допустимых типов аргументов к парам шаблона и преобразователя.

list[R]

List всех переключателей и сводной строки.

long[R]

Отображение от опций длинного стиля к фактическим объектам переключателей.

short[R]

Отображение от опций короткого стиля к фактическим объектам переключателей.

Общедоступные методы класса

new() Показать исходный код
# File lib/optparse.rb, line 769
def initialize
  @atype = {}
  @short = OptionMap.new
  @long = OptionMap.new
  @list = []
end

Просто инициализирует все переменные экземпляра.

Общедоступные методы экземпляра

accept(t, pat = /.*/m, &block) Показать исходный код
# File lib/optparse.rb, line 779
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

См. OptionParser.accept.

append(*args) Показать исходный код
# File lib/optparse.rb, line 843
def append(*args)
  update(*args)
  @list.push(args[0])
end

Добавляет switch в конец списка и связывает короткие, длинные и отрицательные длинные опции. Аргументы:

switch

экземпляр OptionParser::Switch для вставки.

short_opts

List коротких опций.

long_opts

List опций длинного стиля.

nolong_opts

List опций длинного стиля с префиксом «no-».

append(switch, short_opts, long_opts, nolong_opts)
complete(id, opt, icase = false, *pat, &block) Показать исходный код
# File lib/optparse.rb, line 865
def complete(id, opt, icase = false, *pat, &block)
  __send__(id).complete(opt, icase, *pat, &block)
end

Ищет в списке id значения opt и, при необходимости, шаблоны для завершения pat. Если icase равно true, поиск выполняется без учета регистра. Результат возвращается или выводится, если задан блок. Если значение не найдено, возвращается nil.

each_option(&block) Показать исходный код
# File lib/optparse.rb, line 872
def each_option(&block)
  list.each(&block)
end

Итерируется по каждой опции, передавая опцию в block.

prepend(*args) Показать исходный код
# File lib/optparse.rb, line 827
def prepend(*args)
  update(*args)
  @list.unshift(args[0])
end

Вставляет switch в начало списка и связывает короткие, длинные и отрицательные длинные опции. Аргументы:

switch

экземпляр OptionParser::Switch для вставки.

short_opts

List коротких опций.

long_opts

List опций длинного стиля.

nolong_opts

List опций длинного стиля с префиксом «no-».

prepend(switch, short_opts, long_opts, nolong_opts)
reject(t) Показать исходный код
# File lib/optparse.rb, line 795
def reject(t)
  @atype.delete(t)
end

См. OptionParser.reject.

search(id, key) { |val| ... } Показать исходный код
# File lib/optparse.rb, line 852
def search(id, key)
  if list = __send__(id)
    val = list.fetch(key) {return nil}
    block_given? ? yield(val) : val
  end
end

Ищет key в списке id . Результат возвращается или выводится, если задан блок. Если значение не найдено, возвращается nil.

summarize(*args, &block) Показать исходный код
# File lib/optparse.rb, line 881
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

Создаёт таблицу сводки, передавая каждую строку в block (без новой строки). Аргументы args передаются методу summarize, который вызывается для каждой опции.

Приватные методы экземпляра

update(sw, sopts, lopts, nsw = nil, nlopts = nil) Показать исходный код
# File lib/optparse.rb, line 807
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

Добавляет sw в соответствии с sopts, lopts и nlopts.

sw

экземпляр OptionParser::Switch для добавления.

sopts

Список коротких опций.

lopts

Список опций длинного стиля.

nlopts

Список отрицательных опций длинного стиля.

Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API