Class: Minenum::Model::Reflection

Inherits:
Object
  • Object
show all
Defined in:
lib/minenum/model/reflection.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(owner_class, name, values, adapter_builder: Enum::Adapter::LocalInstanceVariableAccessor) ⇒ Reflection

Returns a new instance of Reflection.



11
12
13
14
15
16
17
# File 'lib/minenum/model/reflection.rb', line 11

def initialize(owner_class, name, values, adapter_builder: Enum::Adapter::LocalInstanceVariableAccessor)
  @owner_class = owner_class
  @name = name
  @values = values

  @adapter_builder = adapter_builder
end

Instance Attribute Details

#adapter_builderObject (readonly)

Returns the value of attribute adapter_builder.



9
10
11
# File 'lib/minenum/model/reflection.rb', line 9

def adapter_builder
  @adapter_builder
end

Instance Method Details

#build_enum(model) ⇒ Object



36
37
38
39
# File 'lib/minenum/model/reflection.rb', line 36

def build_enum(model)
  adapter = @adapter_builder.build(model, @name)
  enum_class.new(adapter)
end

#enum_classObject



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/minenum/model/reflection.rb', line 23

def enum_class
  @enum_class ||= begin
    basename = classify(@name.to_s)

    if @owner_class.const_defined?(basename, false)
      @owner_class.const_get(basename, false)
    else
      klass = Enum::ClassBuilder.build(@values)
      @owner_class.const_set(basename, klass)
    end
  end
end

#nameObject



19
20
21
# File 'lib/minenum/model/reflection.rb', line 19

def name
  @name.to_sym
end