Class: OptionParser::List

Inherits:
Object
  • Object
show all
Defined in:
lib/optparse.rb

Overview

Simple option list providing mapping from short and/or long option string to OptionParser::Switch and mapping from acceptable argument to matching pattern and converter pair. Also provides summary feature.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeList

Just initializes all instance variables.



741
742
743
744
745
746
# File 'lib/optparse.rb', line 741

def initialize
  @atype = {}
  @short = OptionMap.new
  @long = OptionMap.new
  @list = []
end

Instance Attribute Details

#atypeObject (readonly)

Map from acceptable argument types to pattern and converter pairs.



727
728
729
# File 'lib/optparse.rb', line 727

def atype
  @atype
end

#listObject (readonly)

List of all switches and summary string.



736
737
738
# File 'lib/optparse.rb', line 736

def list
  @list
end

#longObject (readonly)

Map from long style option switches to actual switch objects.



733
734
735
# File 'lib/optparse.rb', line 733

def long
  @long
end

#shortObject (readonly)

Map from short style option switches to actual switch objects.



730
731
732
# File 'lib/optparse.rb', line 730

def short
  @short
end

Instance Method Details

#accept(t, pat = /.*/m, &block) ⇒ Object

See OptionParser.accept.



751
752
753
754
755
756
757
758
759
760
761
762
# 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

#add_banner(to) ⇒ Object

:nodoc:



871
872
873
874
875
876
877
878
# File 'lib/optparse.rb', line 871

def add_banner(to)  # :nodoc:
  list.each do |opt|
    if opt.respond_to?(:add_banner)
      opt.add_banner(to)
    end
  end
  to
end

#append(*args) ⇒ Object

Appends switch at the tail of the list, and associates short, long and negated long options. Arguments are:

switch

OptionParser::Switch instance to be inserted.

short_opts

List of short style options.

long_opts

List of long style options.

nolong_opts

List of long style options with “no-” prefix.

append(switch, short_opts, long_opts, nolong_opts)


815
816
817
818
# File 'lib/optparse.rb', line 815

def append(*args)
  update(*args)
  @list.push(args[0])
end

#complete(id, opt, icase = false, *pat, &block) ⇒ Object

Searches list id for opt and the optional patterns for completion pat. If icase is true, the search is case insensitive. The result is returned or yielded if a block is given. If it isn’t found, nil is returned.



837
838
839
# File 'lib/optparse.rb', line 837

def complete(id, opt, icase = false, *pat, &block)
  __send__(id).complete(opt, icase, *pat, &block)
end

#compsys(*args, &block) ⇒ Object

:nodoc:



880
881
882
883
884
885
886
# File 'lib/optparse.rb', line 880

def compsys(*args, &block)  # :nodoc:
  list.each do |opt|
    if opt.respond_to?(:compsys)
      opt.compsys(*args, &block)
    end
  end
end

#each_option(&block) ⇒ Object

Iterates over each option, passing the option to the block.



844
845
846
# File 'lib/optparse.rb', line 844

def each_option(&block)
  list.each(&block)
end

#prepend(*args) ⇒ Object

Inserts switch at the head of the list, and associates short, long and negated long options. Arguments are:

switch

OptionParser::Switch instance to be inserted.

short_opts

List of short style options.

long_opts

List of long style options.

nolong_opts

List of long style options with “no-” prefix.

prepend(switch, short_opts, long_opts, nolong_opts)


799
800
801
802
# File 'lib/optparse.rb', line 799

def prepend(*args)
  update(*args)
  @list.unshift(args[0])
end

#reject(t) ⇒ Object

See OptionParser.reject.



767
768
769
# File 'lib/optparse.rb', line 767

def reject(t)
  @atype.delete(t)
end

#search(id, key) ⇒ Object

Searches key in id list. The result is returned or yielded if a block is given. If it isn’t found, nil is returned.



824
825
826
827
828
829
# 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) ⇒ Object

Creates the summary table, passing each line to the block (without newline). The arguments args are passed along to the summarize method which is called on every option.



853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
# 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