Module: Injectable::Initializer

Defined in:
lib/injectable/initializer.rb

Instance Method Summary collapse

Instance Method Details

#add_reader(variable_name) ⇒ Object



25
26
27
28
29
# File 'lib/injectable/initializer.rb', line 25

def add_reader(variable_name)
  self.class.class_eval do
    attr_reader variable_name
  end
end

#defaultsObject



31
32
33
# File 'lib/injectable/initializer.rb', line 31

def defaults
  raise NotImplementedException "Please implement a #defaults method"
end

#initialize(overwrites = {}, *args) ⇒ Object



6
7
8
9
# File 'lib/injectable/initializer.rb', line 6

def initialize(overwrites = {}, *args)
  set_local_variables(method(:initialize).parameters, args)
  set_instance_variables(defaults.merge(overwrites))
end

#set_instance_variables(args) ⇒ Object



18
19
20
21
22
23
# File 'lib/injectable/initializer.rb', line 18

def set_instance_variables(args)
  args.each do |variable_name, value|
    instance_variable_set "@#{variable_name}", value
    add_reader(variable_name)
  end
end

#set_local_variables(parameters, args) ⇒ Object



11
12
13
14
15
16
# File 'lib/injectable/initializer.rb', line 11

def set_local_variables(parameters, args)
  parameters.each_with_index do |parameter, index|
    instance_variable_set "@#{parameter.last}", args[index]
    add_reader(parameter.last)
  end
end