14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/torc.rb', line 14
def recurse(*args)
return [:recurse, args] if instance_variable_defined? :@caller
begin
@caller = binding.of_caller(1).eval('__method__')
caller_args = [:start, args]
loop do
caller_args = __send__ @caller, *caller_args.last
return caller_args unless caller_args.respond_to? :first
return caller_args unless caller_args.first == :recurse
end
ensure
remove_instance_variable :@caller if instance_variable_defined? :@caller
end
end
|