Module: InsaneHook::ClassMethods

Defined in:
lib/insane_hook.rb

Instance Method Summary collapse

Instance Method Details

#new(**args, &block) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/insane_hook.rb', line 31

def new(**args, &block)
  obj = self.allocate
  self.class_variable_get(:@@_command)[:required].each do |var|
    value = args.fetch(var) { raise "#{var} not provided in #{self.class}" }
    obj.instance_variable_set("@#{var}", value)
    obj.class.class_eval{attr_reader var}
  end
  self.class_variable_get(:@@_command)[:optional].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