Sha256: 231966c74d73bef404db88aa9c240a19dc20b2073c4fea40246ed795fa798cb8
Contents?: true
Size: 1007 Bytes
Versions: 2
Compression:
Stored size: 1007 Bytes
Contents
class Mode < ::String class Error < ::StandardError; end class Duplicate < Error; end class Ambiguous < Error include Main::Softspoken end class List < ::Array def initialize *a, &b super ensure self.fields = [] end def add klass mode_name = Mode.new klass.mode_name raise Duplicate, mode_name if has_key? mode_name self[mode_name] = klass end 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 end def self.list *a, &b List.new *a, &b end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ThiagoLelis-backgroundjob-1.0.5 | lib/main/mode.rb |
ThiagoLelis-backgroundjob-1.0.6 | lib/main/mode.rb |