module ReeEnum::Enumerable::ClassMethods
def get_enum_name
def get_enum_name @values&.enum_name end
def get_values
def get_values @values end
def setup_enum(enum_name)
def setup_enum(enum_name) @values ||= ReeEnum::Values.new(self, enum_name) end
def val(value, mapped_value = nil, method: nil)
def val(value, mapped_value = nil, method: nil) value = value.to_s if value.is_a?(Symbol) mapped_value ||= value if method.nil? && value.is_a?(String) && value.match?(ALLOWED_VALUE_TO_METHOD_REGEXP) method = value.to_sym end if RESTRICTED_METHODS.include?(method) raise ArgumentError.new("#{method.inspect} is not allowed as enum method") end enum_value = @values.add(value, mapped_value, method) if !method.nil? class_eval(<<~RUBY, __FILE__, __LINE__ + 1) def #{method} get_values.by_value(#{value.inspect}.freeze) end def self.#{method} get_values.by_value(#{value.inspect}.freeze) end RUBY end enum_value end