module Decay::Enum

Public Instance Methods

enum(**rules) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/decay/enum.rb, line 4
def enum(**rules)
  rules.each do |enum_name, enum_values|
    enumerated_type_class =
      if enum_values.is_a?(Hash)
        ::Decay::EnumeratedType.create(**enum_values)
      else
        ::Decay::EnumeratedType.create(*enum_values)
      end

    meta = Metaprogramming.new(
      class: self,
      enumerated_type: enumerated_type_class,
      enumerated_type_name: enum_name
    )

    meta.define_enumerated_type

    meta.define_getter
    meta.define_setter
  end
end