Method: Eapi::Methods::Accessor#define_init

Defined in:
lib/eapi/methods/accessor.rb

#define_init(field, init_class) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/eapi/methods/accessor.rb', line 44

def define_init(field, init_class)
  init         = Eapi::Methods::Names.init field
  instance_var = Eapi::Methods::Names.instance_var field

  define_method init do
    klass = Eapi::TypeChecker.constant_for_type init_class
    raise Eapi::Errors::InvalidInitClass, "init_class: #{init_class}" if klass.nil?
    value = klass.new
    instance_variable_set instance_var, value
  end
end