class EacRubyUtils::Enum

def enum(key, *args, &block)

def enum(key, *args, &block)
  value = Value.new(self, key, args, &block)
  raise ::ArgumentError, "#{self} already has a value with key=#{value.key}" if
    value_set.include?(value)
  value_set << value.apply
  self
end

def initialize(key)

def initialize(key)
  @key = key
end

def value_set

def value_set
  @value_set ||= []
end

def values

def values
  value_set.map(&:value)
end