Module OptionParser::Completion
In: lib/optparse.rb

Keyword completion module. This allows partial arguments to be specified and resolved against a list of acceptable values.

Methods

complete   convert  

Public Instance methods

[Source]

     # File lib/optparse.rb, line 221
221:     def complete(key, icase = false, pat = nil)
222:       pat ||= Regexp.new('\A' + Regexp.quote(key).gsub(/\w+\b/, '\&\w*'),
223:                          icase)
224:       canon, sw, k, v, cn = nil
225:       candidates = []
226:       each do |k, *v|
227:         (if Regexp === k
228:            kn = nil
229:            k === key
230:          else
231:            kn = defined?(k.id2name) ? k.id2name : k
232:            pat === kn
233:          end) or next
234:         v << k if v.empty?
235:         candidates << [k, v, kn]
236:       end
237:       candidates = candidates.sort_by {|k, v, kn| kn.size}
238:       if candidates.size == 1
239:         canon, sw, * = candidates[0]
240:       elsif candidates.size > 1
241:         canon, sw, cn = candidates.shift
242:         candidates.each do |k, v, kn|
243:           next if sw == v
244:           if String === cn and String === kn
245:             if cn.rindex(kn, 0)
246:               canon, sw, cn = k, v, kn
247:               next
248:             elsif kn.rindex(cn, 0)
249:               next
250:             end
251:           end
252:           throw :ambiguous, key
253:         end
254:       end
255:       if canon
256:         block_given? or return key, *sw
257:         yield(key, *sw)
258:       end
259:     end

[Source]

     # File lib/optparse.rb, line 261
261:     def convert(opt = nil, val = nil, *)
262:       val
263:     end

[Validate]