Maintenance Ruby 3.4 gets fixes, but no new features. Switch to Ruby 4.0 →
class method
ErrorHighlight::DefaultFormatter.message_for
message_for(spot)
lib/error_highlight/formatter.rb
View on GitHub ↗
# File tmp/rubies/ruby-3.4.1/lib/error_highlight/formatter.rb, line 5
def self.message_for(spot)
# currently only a one-line code snippet is supported
return "" unless spot[:first_lineno] == spot[:last_lineno]
snippet = spot[:snippet]
first_column = spot[:first_column]
last_column = spot[:last_column]
ellipsis = "..."
# truncate snippet to fit in the viewport
if max_snippet_width && snippet.size > max_snippet_width
available_width = max_snippet_width - ellipsis.size
center = first_column - max_snippet_width / 2
visible_start = last_column < available_width ? 0 : [center, 0].max
visible_end = visible_start + max_snippet_width
visible_start = snippet.size - max_snippet_width if visible_end > snippet.size
prefix = visible_start.positive? ? ellipsis : ""
suffix = visible_end < snippet.size ? ellipsis : ""
snippet = prefix + snippet[(visible_start + prefix.size)...(visible_end - suffix.size)] + suffix
snippet << "\n" unless snippet.end_with?("\n")
first_column -= visible_start
last_column = [last_column - visible_start, snippet.size - 1].min
end
indent = snippet[0...first_column].gsub(/[^\t]/, " ")
marker = indent + "^" * (last_column - first_column)
"\n\n#{ snippet }#{ marker }"
end
No documentation available