class EacRubyUtils::CommonConstructor::InstanceInitialize

Attributes

args[R]
common_constructor[R]
object[R]

Public Class Methods

new(common_constructor, args, object) click to toggle source
# File lib/eac_ruby_utils/common_constructor/instance_initialize.rb, line 8
def initialize(common_constructor, args, object)
  @common_constructor = common_constructor
  @args = args
  @object = object
end

Public Instance Methods

run() click to toggle source
# File lib/eac_ruby_utils/common_constructor/instance_initialize.rb, line 14
def run
  validate_args_count
  object.run_callbacks :initialize do
    object_attributes_set
    object_after_callback
  end
end

Private Instance Methods

arg_value(arg_name) click to toggle source
# File lib/eac_ruby_utils/common_constructor/instance_initialize.rb, line 24
def arg_value(arg_name)
  arg_index = common_constructor.args.index(arg_name)
  if arg_index < args.count
    args[arg_index]
  else
    common_constructor.default_values[arg_index - common_constructor.args_count_min]
  end
end
object_after_callback() click to toggle source
# File lib/eac_ruby_utils/common_constructor/instance_initialize.rb, line 33
def object_after_callback
  return unless common_constructor.after_set_block

  object.instance_eval(&common_constructor.after_set_block)
end
object_attributes_set() click to toggle source
# File lib/eac_ruby_utils/common_constructor/instance_initialize.rb, line 39
def object_attributes_set
  common_constructor.args.each do |arg_name|
    object.send("#{arg_name}=", arg_value(arg_name))
  end
end
validate_args_count() click to toggle source
# File lib/eac_ruby_utils/common_constructor/instance_initialize.rb, line 45
def validate_args_count
  return if common_constructor.args_count.include?(args.count)

  raise ArgumentError, "#{object.class}.initialize: wrong number of arguments" \
    " (given #{args.count}, expected #{common_constructor.args_count})"
end