Module
Keyword completion module. This allows partial arguments to be specified and resolved against a list of acceptable values.
Class Methods
lib/optparse.rb
View on GitHub
# File tmp/rubies/ruby-2.4.10/lib/optparse.rb, line 411
def self.candidate(key, icase = false, pat = nil, &block)
pat ||= Completion.regexp(key, icase)
candidates = []
block.call do |k, *v|
(if Regexp === k
kn = "".freeze
k === key
else
kn = defined?(k.id2name) ? k.id2name : k
pat === kn
end) or next
v << k if v.empty?
candidates << [k, v, kn]
end
candidates
end
No documentation available
lib/optparse.rb
View on GitHub
# File tmp/rubies/ruby-2.4.10/lib/optparse.rb, line 407
def self.regexp(key, icase)
Regexp.new('\A' + Regexp.quote(key).gsub(/\w+\b/, '\&\w*'), icase)
end
No documentation available
Instance Methods
lib/optparse.rb
View on GitHub
# File tmp/rubies/ruby-2.4.10/lib/optparse.rb, line 428
def candidate(key, icase = false, pat = nil)
Completion.candidate(key, icase, pat, &method(:each))
end
No documentation available
lib/optparse.rb
View on GitHub
# File tmp/rubies/ruby-2.4.10/lib/optparse.rb, line 433
def complete(key, icase = false, pat = nil)
candidates = candidate(key, icase, pat, &method(:each)).sort_by {|k, v, kn| kn.size}
if candidates.size == 1
canon, sw, * = candidates[0]
elsif candidates.size > 1
canon, sw, cn = candidates.shift
candidates.each do |k, v, kn|
next if sw == v
if String === cn and String === kn
if cn.rindex(kn, 0)
canon, sw, cn = k, v, kn
next
elsif kn.rindex(cn, 0)
next
end
end
throw :ambiguous, key
end
end
if canon
block_given? or return key, *sw
yield(key, *sw)
end
end
No documentation available
lib/optparse.rb
View on GitHub
# File tmp/rubies/ruby-2.4.10/lib/optparse.rb, line 458
def convert(opt = nil, val = nil, *)
val
end
No documentation available