Class: SimplerEnum::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/simpler_enum/generator.rb

Instance Method Summary collapse

Constructor Details

#initialize(klass, enum_name, enum_values) ⇒ Generator

Returns a new instance of Generator.



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/simpler_enum/generator.rb', line 3

def initialize(klass, enum_name, enum_values)
  @klass = klass
  @enum_name = enum_name
  @enum_values =
    case
    when enum_values.is_a?(Array)
      enum_values.zip(0...enum_values.size).reduce({}) do |hash, (key, val)|
        hash.merge!(key => val)
      end
    when enum_values.is_a?(Hash)
      enum_values
    else
      fail ArgumentError
    end
end

Instance Method Details

#execute!Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/simpler_enum/generator.rb', line 19

def execute!
  define_read_enum_values_method_to_class!

  define_read_attribute_to_instance!
  define_write_attribute_to_instance!

  define_read_enum_value_method_to_instance!
  define_write_enum_value_method_to_instance!

  @enum_values.each do |key, _|
    define_query_enum_state_method_to_instance!(key)
    define_change_enum_state_method_to_instance!(key)
  end
end