41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/named_let.rb', line 41
def extend_for_reporting(obj, the_name)
return obj if obj.nil?
call_super = begin ;$DEBUG or Debugger.started? rescue LoadError; nil; end
inject_code = lambda{|o, code| begin; o.instance_eval code; rescue TypeError; end }
escape = lambda{|str| str.gsub(/\"/, '\\"')}
genereate_wrapper_code = lambda{|o, method|
original_result = escape.call(o.send(method)) if call_super
"def #{method}; \"#{the_name}\" #{call_super ? " + \" (#{original_result})\"" : ''} ;end"
}
to_s_code = genereate_wrapper_code.call(obj, :to_s)
inspect_code = genereate_wrapper_code.call(obj, :inspect)
inject_code.call(obj, to_s_code)
inject_code.call(obj, inspect_code)
obj
end
|