Module: InsaneHook::ClassMethods

Defined in:
lib/insane_hook.rb

Instance Method Summary collapse

Instance Method Details

#new(**args) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/insane_hook.rb', line 62

def new(**args)
  obj = self.allocate
  self.class_variable_get(::InsaneHook::ARGS_VAR)[REQUIRED_ARGS].each do |var|
    value = args.fetch(var) { raise(::InsaneHook::MissingArgumentError, "#{var} not provided in #{self.class}") }
    obj.instance_variable_set("@#{var}", value)
    obj.class.class_eval{attr_reader var}
  end
  self.class_variable_get(::InsaneHook::ARGS_VAR)[OPTIONAL_ARGS].each do |var|
    value = args.fetch(var, nil)
    obj.instance_variable_set("@#{var}", value)
    obj.class.class_eval{attr_reader var}
  end
  obj.send :initialize
  obj
end