[フレーム]

Module: OptionParser::Completion

Included in:
CompletingHash , OptionMap
Defined in:
opal/stdlib/optparse.rb

Overview

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.candidate(key, icase = false, pat = nil, &block) ⇒ Object

445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
# File 'opal/stdlib/optparse.rb', line 445
def self.candidate(key, icase = false, pat = nil, &block)
 pat ||= Completion .regexp (key, icase)
 candidates = []
 block.call do |k, *v|
 (if Regexp  === k
 kn = ''
 k === key
 else
 kn = defined?(k.id2name) ? k.id2name : k
 pat === kn
 end) || next
 v << k if v.empty?
 candidates << [k, v, kn]
 end
 candidates
end

.regexp(key, icase) ⇒ Object

441
442
443
# File 'opal/stdlib/optparse.rb', line 441
def self.regexp(key, icase)
 Regexp .new('\A' + Regexp .quote(key).gsub(/\w+\b/, '\&\w*'), icase)
end

Instance Method Details

#candidate(key, icase = false, pat = nil) ⇒ Object

462
463
464
# File 'opal/stdlib/optparse.rb', line 462
def candidate(key, icase = false, pat = nil)
 Completion .candidate (key, icase, pat, &method(:each))
end

#complete(key, icase = false, pat = nil) ⇒ Object

468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
# File 'opal/stdlib/optparse.rb', line 468
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) && (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? || (return key, *sw)
 yield(key, *sw)
 end
end

#convert(opt = nil, val = nil) ⇒ Object

493
494
495
# File 'opal/stdlib/optparse.rb', line 493
def convert(opt = nil, val = nil, *)
 val
end

AltStyle によって変換されたページ (->オリジナル) /