class EacRubyUtils::Enum
Similar to Java’s enum type (docs.oracle.com/javase/tutorial/java/javaOO/enum.html).
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