module ReeEnum::Enumerable::ClassMethods

def val(value, number, label = nil)

def val(value, number, label = nil)
  if value == :new
    raise ArgumentError.new(":new is not allowed as enum value")
  end
  
  enum_value = values.add(value, number: number, label: label)
  define_method "#{enum_value.value}" do
    by_value(enum_value.value)
  end
  define_singleton_method "#{enum_value.value}" do
    by_value(enum_value.value)
  end
  enum_value
end