module ReeEnum::Enumerable::ClassMethods

def enum_name

def enum_name
  return if !@values
  @values.enum_name
end

def setup_enum(enum_name)

def setup_enum(enum_name)
  @values ||= ReeEnum::Values.new(self, enum_name)
end

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

def values

def values
  @values
end