Module: ActiveModule::Enum

Includes:
ClassMethodsDefiner, InstanceMethodsDefiner, Util
Defined in:
lib/active_module/enum.rb,
lib/active_module/enum/util.rb,
lib/active_module/enum/class_methods_definer.rb,
lib/active_module/enum/instance_methods_definer.rb

Defined Under Namespace

Modules: ClassMethodsDefiner, InstanceMethodsDefiner, Util

Instance Method Summary collapse

Methods included from ClassMethodsDefiner

#build_fields_map, #define_class_query, #define_enum_scope, #define_fields_method

Methods included from InstanceMethodsDefiner

#define_instance_methods

Methods included from Util

#build_ambiguity_map, #build_name_maps, #build_unique_names_map, #define_if_new, #determine_prefix, #determine_suffix, #enum_method_name, #warn_if_ambiguous

Instance Method Details

#active_module_enum(attribute_name, prefix: nil, suffix: nil, scope: true, **options) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/active_module/enum.rb', line 10

def active_module_enum(attribute_name,
                       prefix: nil,
                       suffix: nil,
                       scope: true,
                       **options)
  type = attribute_types[attribute_name.to_s]
  unless type.is_a?(ActiveModule::Base)
    raise ArgumentError,
          "#{attribute_name} is not " \
          "an active_module attribute"
  end
  opts = build_enum_opts(
    attribute_name, prefix, suffix,
    scope, options
  )
  mods = type.possible_modules
  define_enum_methods(attribute_name, mods, opts)
  define_fields_method(attribute_name, mods, type.mapping)
end