Module: WhoCalledMe::Utils::TraceUtils

Defined in:
lib/who_called_me/utils/trace_utils.rb

Instance Method Summary collapse

Instance Method Details

#formatted_trace(trace, processed_first_lines) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/who_called_me/utils/trace_utils.rb', line 11

def formatted_trace(trace, processed_first_lines)
  first_line, last_line = trace.first, trace.last
  already_recorded_a_trace_for_this_target = processed_first_lines.include?(first_line)
  trace.shift
  res = []
  res << "\n"

  unless already_recorded_a_trace_for_this_target
    processed_first_lines << first_line
    short_form = already_recorded_a_trace_for_this_target
    res += boxed_code_snippet_around(first_line)  unless short_form
  end
  res << '  was called by :'
  res += indented_call_trace(trace)
  res += indent(boxed_code_snippet_around(last_line), :prefix => ' '*6)
  res
end

#fulltraceObject



5
6
7
8
9
# File 'lib/who_called_me/utils/trace_utils.rb', line 5

def fulltrace
  raise
rescue
  $!.backtrace
end

#indented_call_trace(trace, base_padding = ' ') ⇒ Object



30
31
32
33
34
35
# File 'lib/who_called_me/utils/trace_utils.rb', line 30

def indented_call_trace(trace, base_padding='  ')
  padding = ''
  [].tap do |indented_trace|
    trace.each_with_index { |line, i| indented_trace << "  . #{base_padding*i}#{line}" }
  end
end