class Main::Mode::List

Public Class Methods

new(*a, &b) click to toggle source
Calls superclass method
# File lib/main/mode.rb, line 10
def initialize *a, &b
  super
ensure
  self.fields = []
end

Public Instance Methods

add(klass) click to toggle source
# File lib/main/mode.rb, line 16
def add klass
  mode_name = Mode.new klass.mode_name
  raise Duplicate, mode_name if has_key? mode_name
  self[mode_name] = klass
end
find_by_mode(m, options = {}) click to toggle source
# File lib/main/mode.rb, line 22
def find_by_mode m, options = {}
  quiet = options['quiet'] || options[:quiet]
  each_pair do |mode, klass|
    return mode if mode == m
  end
  candidates = []
  each_pair do |mode, klass|
    candidates << mode if mode.index(m) == 0
  end
  case candidates.size
    when 0
      nil
    when 1
      candidates.first
    else
      raise Ambiguous, "ambiguous mode: #{ m } = (#{ candidates.sort.join ' or ' })?"
  end
end