Method: OptionParser::Switch#summarize
- Defined in:
- lib/optparse.rb
#summarize(sdone = [], ldone = [], width = 1, max = width - 1, indent = "") ⇒ Object
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
widthcolumns. max-
Maximum width of left side -> the options are filled within
maxcolumns. indent-
Prefix string indents all summarized lines.
370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 |
# File 'lib/optparse.rb', line 370 def summarize(sdone = [], ldone = [], width = 1, max = width - 1, indent = "") sopts, lopts, s = [], [], 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] << if left[-1].empty? then ' ' * 4 else ', ' end << s end left[0] << arg if arg mlen = left.collect {|s| s.length}.max.to_i while mlen > width and l = left.shift mlen = left.collect {|s| s.length}.max.to_i if l.length == mlen 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 |