Individual switch class. Not important to the user.
Defined within Switch
are several Switch-derived classes: NoArgument
, RequiredArgument
, etc.
Namespace
- CLASS OptionParser::Switch::NoArgument
- CLASS OptionParser::Switch::OptionalArgument
- CLASS OptionParser::Switch::PlacedArgument
- CLASS OptionParser::Switch::RequiredArgument
Methods
- G
- I
- N
- P
- S
Attributes
[R] | arg | |
[R] | block | |
[R] | conv | |
[R] | desc | |
[R] | long | |
[R] | pattern | |
[R] | short |
Class Public methods
guess(arg) Link
Guesses argument style from arg
. Returns corresponding OptionParser::Switch
class (OptionalArgument
, etc.).
incompatible_argument_styles(arg, t) Link
new(pattern = nil, conv = nil, short = nil, long = nil, arg = nil, desc = ([] if short or long), block = nil, &_block) Link
# File ruby/lib/optparse.rb, line 543 def initialize(pattern = nil, conv = nil, short = nil, long = nil, arg = nil, desc = ([] if short or long), block = nil, &_block) raise if Array === pattern block ||= _block @pattern, @conv, @short, @long, @arg, @desc, @block = pattern, conv, short, long, arg, desc, block end
pattern() Link
Instance Public methods
summarize(sdone = {}, ldone = {}, width = 1, max = width - 1, indent = "") Link
Produces the summary text. Each line of the summary is yielded to the block (without newline).
sdone
-
Already summarized short style options keyed hash.
ldone
-
Already summarized long style options keyed hash.
width
-
Width of left side (option part). In other words, the right side (description part) starts after
width
columns. max
-
Maximum width of left side -> the options are filled within
max
columns. indent
-
Prefix string indents all summarized lines.
# File ruby/lib/optparse.rb, line 603 def summarize(sdone = {}, ldone = {}, width = 1, max = width - 1, indent = "") sopts, lopts = [], [], nil @short.each {|s| sdone.fetch(s) {sopts << s}; sdone[s] = true} if @short @long.each {|s| ldone.fetch(s) {lopts << s}; ldone[s] = true} if @long return if sopts.empty? and lopts.empty? # completely hidden left = [sopts.join(', ')] right = desc.dup while s = lopts.shift l = left[-1].length + s.length l += arg.length if left.size == 1 && arg l < max or sopts.empty? or left << +'' left[-1] << (left[-1].empty? ? ' ' * 4 : ', ') << s end if arg left[0] << (left[1] ? arg.sub(/\A(\[?)=/, '\1') + ',' : arg) end mlen = left.collect {|ss| ss.length}.max.to_i while mlen > width and l = left.shift mlen = left.collect {|ss| ss.length}.max.to_i if l.length == mlen if l.length < width and (r = right[0]) and !r.empty? l = l.to_s.ljust(width) + ' ' + r right.shift end yield(indent + l) end while begin l = left.shift; r = right.shift; l or r end l = l.to_s.ljust(width) + ' ' + r if r and !r.empty? yield(indent + l) end self end