Module: Kernel
- Defined in:
- lib/cenum.rb,
lib/version.rb
Defined Under Namespace
Classes: Enum
Instance Method Summary collapse
Instance Method Details
#enum(*names) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/cenum.rb', line 37 def enum(*names) klass = Class.new(Enum) counter = 0 names.each do |name| if name.is_a? Hash counter = name.values.first name = name.keys.first end klass.const_set(klass.constant_name(name), counter) klass.send(:define_method, "#{name}?", lambda { @value == klass[name] }) klass.send(:define_method, "#{name}!", lambda { @value = klass[name] }) counter += 1 end (class << klass ; self ; end).send(:define_method, :values){ names } klass end |