errors/highlight_keyword_no_parens.rb

tests/_examples/errors/highlight_keyword_no_parens.rb in the metorex repository.

# `highlight:` takes true, false, or nil and nothing else.
problem = begin
  raise "meter offline"
rescue => raised
  raised
end
shown = problem.full_message highlight: false, order: :top
p shown.include? "meter offline (RuntimeError)"
p problem.detailed_message highlight: nil
begin
  problem.full_message highlight: "yes"
rescue ArgumentError => refused
  p refused.message
end
begin
  problem.detailed_message highlight: 1
rescue ArgumentError => refused
  p refused.message
end

# A program's own `set_backtrace` is handed the backtrace `raise` names.
class LoggedError < StandardError
  attr_reader :log
  def set_backtrace lines
    (@log ||= []) << lines
    super
  end
end
begin
  raise LoggedError, "late", ["meter.rb:4"]
rescue LoggedError => caught
  p caught.log
  p caught.backtrace
end

Output:

true
"meter offline (RuntimeError)"
"expected true or false as highlight: \"yes\""
"expected true or false as highlight: 1"
[["meter.rb:4"]]
["meter.rb:4"]