37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/casting/context.rb', line 37
def initialize(*setup_args, &block)
attr_reader(*setup_args)
private(*setup_args)
if block
define_method(:__custom_initialize, &block)
else
define_method(:__custom_initialize) do; end
end
mod = Module.new
line = __LINE__; string = %<
def initialize(#{setup_args.map{|name| "#{name}:" }.join(',')})
@assignments = []
#{setup_args.map do |name|
["assign(",name,", '",name,"')"].join
end.join("\n")}
__custom_initialize
Thread.current[:context] = self
end
attr_reader :assignments
>
mod.class_eval string, __FILE__, line
const_set('Initializer', mod)
include mod
end
|