Module: FeideeUtils::Mixins::Type::ClassMethods

Defined in:
lib/feidee_utils/mixins/type.rb

Instance Method Summary collapse

Instance Method Details

#define_type_enum(type_enum, reverse_lookup = true) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/feidee_utils/mixins/type.rb', line 7

def define_type_enum type_enum, reverse_lookup = true
  const_set :TypeEnum, type_enum.freeze

  if reverse_lookup
    enum_values = type_enum.values
    if enum_values.size != enum_values.uniq.size
      raise "Duplicate values in enum #{type_enum}."
    end

    const_set :TypeCode, type_enum.invert.freeze
    define_singleton_method :type_code do |type_enum_value|
      self::TypeCode[type_enum_value]
    end
  end
end