Class: Klenod::Runtime::BacktraceRewriter
- Inherits:
-
Object
- Object
- Klenod::Runtime::BacktraceRewriter
show all
- Defined in:
- lib/klenod/runtime/backtrace_rewriter.rb
Defined Under Namespace
Classes: BacktraceString, ParsedBacktraceEntry
Instance Method Summary
collapse
Constructor Details
Returns a new instance of BacktraceRewriter.
41
42
43
44
45
|
# File 'lib/klenod/runtime/backtrace_rewriter.rb', line 41
def initialize(mods)
@source_maps = source_maps_for(mods)
@source_map_cache = Hash.new { |h, path| h[path] = @source_maps[path] }
@constant_display_names = constant_display_names_for(mods)
end
|
Instance Method Details
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/klenod/runtime/backtrace_rewriter.rb', line 47
def format_exception(e, source_path: nil)
reset = "\e[0;48;5;52m"
rewrite_exception(e)
sources = format_sources(e.backtrace)
[
"\e[1;31;47m ERROR \e[3;31;47m #{e.class.name}: #{e.message} #{reset}",
"\e[1;34mBacktrace:#{reset}",
e
.backtrace
.map do |line|
if line in BacktraceString
format(
"#{reset}\e[2mfrom #{reset}\e[1m%<file>s:%<line>d#{reset}\e[2m:in '#{reset}\e[1m%<description>s#{reset}\e[2m'#{reset}",
line.parsed_backtrace_entry.to_h
)
else
"from #{line}"
end
end
.join("\n"),
formatted_sources(sources, reset)
].compact.join("\n") + "\e[0m"
end
|
#rewrite_backtrace(backtrace) ⇒ Object
77
78
79
80
81
82
83
84
85
|
# File 'lib/klenod/runtime/backtrace_rewriter.rb', line 77
def rewrite_backtrace(backtrace)
backtrace.map do |line|
if (entry = ParsedBacktraceEntry.parse(line))
rewrite_backtrace_entry(entry).to_backtrace_string
else
line
end
end
end
|
#rewrite_exception(e) ⇒ Object
72
73
74
75
|
# File 'lib/klenod/runtime/backtrace_rewriter.rb', line 72
def rewrite_exception(e)
rewrite_exception_message(e)
e.set_backtrace(rewrite_backtrace(e.backtrace))
end
|