5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/cf_script/scope.rb', line 5
def exec_in(inner, *args, &block)
outer = eval('self', block.binding)
outer = CfScript::Scope::Root.new if outer.class == Object
inner_proxy = CfScript::Scope::Proxy.new(inner, outer)
begin
outer.instance_variables.each do |var|
val = outer.instance_variable_get(var)
inner_proxy.instance_variable_set(var, val)
end
inner_proxy.instance_exec(*args, &block)
ensure
outer.instance_variables.each do |var|
val = inner_proxy.instance_variable_get(var)
outer.instance_variable_set(var, val)
end
end
end
|