klenod-runtime 0.0.24 → 0.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4955afb09bb53735a0050246985f93a23f08c812a51919ec1983f5c06b7bd1e4
4
- data.tar.gz: 8144b9a1af8765db1c59f7c1b5741f3f1317fce9a9419578e798e73838a9eabd
3
+ metadata.gz: b6f0c91d7317fbce5a7fb31ca1053250d8948a1d79c651cc326c60d4e8320e48
4
+ data.tar.gz: 64a1db410a43c214bdd5d890d08edb43349d0a25735e497dd2d38892f29b1b7d
5
5
  SHA512:
6
- metadata.gz: acd95e92ef8d6d86e92eb2d00514e3811254b29dd4895ad89cd088c66ded5e27d40cd769f4d78b0bb462543a053bbe2ddba47332626fc8d767788fc4276ac846
7
- data.tar.gz: 425fb99245cdbfcb7065b6609b561392e491269ce6d78923e762a1f038da87f85ed7161fb5df58dc263d5bf31b126e207c691516df054c55dd1730ef2f875768
6
+ metadata.gz: f8d93b47b5c8ff28e4be3818962129f505a6b889fa8555f8aa1592dc1089bf40388311c6c984d302afc79769617da996f2141e399c4d8e60ef4db993f6f57b9e
7
+ data.tar.gz: 4f9eaf10ab9690a834eeaa42eb7f5e3508635ef05fd942e3af987cf1ed539c48916958608cdfd9b4782f65642f05981e153abb9f78a5e5a7487bc5a73e7b0243
@@ -44,31 +44,6 @@ module Klenod
44
44
  @constant_display_names = constant_display_names_for(mods)
45
45
  end
46
46
 
47
- def format_exception(e, source_path: nil)
48
- reset = "\e[0;48;5;52m"
49
- rewrite_exception(e)
50
- sources = format_sources(e.backtrace)
51
-
52
- [
53
- "\e[1;31;47m ERROR \e[3;31;47m #{e.class.name}: #{e.message} #{reset}",
54
- "\e[1;34mBacktrace:#{reset}",
55
- e
56
- .backtrace
57
- .map do |line|
58
- if line in BacktraceString
59
- format(
60
- "#{reset}\e[2mfrom #{reset}\e[1m%<file>s:%<line>d#{reset}\e[2m:in '#{reset}\e[1m%<description>s#{reset}\e[2m'#{reset}",
61
- line.parsed_backtrace_entry.to_h
62
- )
63
- else
64
- "from #{line}"
65
- end
66
- end
67
- .join("\n"),
68
- formatted_sources(sources, reset)
69
- ].compact.join("\n") + "\e[0m"
70
- end
71
-
72
47
  def rewrite_exception(e)
73
48
  rewrite_exception_message(e)
74
49
  e.set_backtrace(rewrite_backtrace(e.backtrace))
@@ -84,21 +59,14 @@ module Klenod
84
59
  end
85
60
  end
86
61
 
87
- private
88
-
89
- def formatted_sources(sources, reset)
90
- return nil if sources.empty?
91
-
92
- [
93
- "\e[1;34mSources:#{reset}",
94
- sources
95
- .map do |file, formatted_source|
96
- "\e[1m#{file}\e[0m\n#{formatted_source}"
97
- end
98
- .join("\n")
99
- ].join("\n")
62
+ # The original source of the module evaluated from `file`, for tools
63
+ # that show an excerpt next to a frame.
64
+ def source_for(file)
65
+ @source_map_cache[file]&.input
100
66
  end
101
67
 
68
+ private
69
+
102
70
  def source_maps_for(mods)
103
71
  mods.each_with_object({}) do |(key, mod), index|
104
72
  next unless mod.respond_to?(:source_map)
@@ -148,56 +116,6 @@ module Klenod
148
116
  def find_original_line_no(file, line_no)
149
117
  @source_map_cache[file]&.find_original_line_no(line_no)
150
118
  end
151
-
152
- def format_sources(backtrace)
153
- backtrace
154
- .select { |line| line.is_a?(BacktraceString) }
155
- .map(&:parsed_backtrace_entry)
156
- .group_by(&:file)
157
- .map do |file, entries|
158
- if (source_map = @source_map_cache[file])
159
- [file, format_source(source_map.input, entries.map(&:line))]
160
- end
161
- end
162
- .compact
163
- .to_h
164
- end
165
-
166
- def format_source(source, interesting_lines)
167
- ranges =
168
- merge_overlapping_ranges(interesting_lines.map { (it - 2)..(it + 2) })
169
- lines = source.each_line.to_a
170
-
171
- ranges
172
- .map do |range|
173
- range
174
- .map do |i|
175
- next if i <= 0
176
- line = lines[i - 1]
177
- next unless line
178
-
179
- str = format("%3d: %s", i, line.chomp)
180
- interesting_lines.include?(i) ? "\e[1;31m#{str}\e[0m" : str
181
- end
182
- .compact
183
- .join("\n")
184
- end
185
- .join("\n\e[37;44m ... \e[0m\n")
186
- end
187
-
188
- def merge_overlapping_ranges(ranges)
189
- ranges.each_with_object([]) do |range, merged|
190
- if (idx = merged.find_index { |r| r.overlap?(range) })
191
- overlapping = merged[idx]
192
- merged[idx] = [overlapping.begin, range.begin].min..[
193
- overlapping.end,
194
- range.end
195
- ].max
196
- else
197
- merged << range
198
- end
199
- end
200
- end
201
119
  end
202
120
  end
203
121
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Klenod
4
4
  module Runtime
5
- VERSION = "0.0.24"
5
+ VERSION = "0.0.26"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: klenod-runtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.24
4
+ version: 0.0.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrés Alin