class ReeEnum::Values
def add(value, mapped_value, method)
def add(value, mapped_value, method) if @value_type.nil? @value_type = value.class elsif @value_type != value.class raise ArgumentError, "#{@klass}: value types should be the same for all enum values" end if !method.nil? && @collection.any? { _1.method == method } raise ArgumentError, "#{@klass}: method #{method.inspect} was already added" end if @collection_by_value.key?(value) raise ArgumentError, "#{@klass}: value #{value.inspect} was already added" end if @collection_by_mapped_value.key?(mapped_value) raise ArgumentError, "#{@klass}: mapped_value(#{mapped_value.inspect}) for #{value.inspect} was already added" end enum_value = ReeEnum::Value.new( @klass, @enum_name, value, mapped_value, method ) @collection << enum_value @collection_by_value[value] = enum_value @collection_by_mapped_value[mapped_value] = enum_value enum_value end