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
|