Как вы меняете цвет вывода для объекта в Pry?

Я строю объект, который чем-то похож на nil, он называется nil_query и является экземпляром одноэлементного класса NilQuery.

Мне бы хотелось, чтобы этот класс отображался аналогично true, false и nil при вызове в Pry, то есть я хочу, чтобы он отображался в своем собственном специальном цвете, а не просто в белом:

Моей первой мыслью (именно так я и получил результаты на рисунке выше) было просто изменить строку из метода inspect в NilQuery, чтобы включить форматирование цвета:

class NilQuery
  def inspect
    "\e[36;1mnil_query\e[0m"
  end
end

Это, конечно, ужасная идея, поскольку она меняет способ отображения всех ошибок и включает в себя строку чисел, определяющих вывод терминала. Так что если бы я вызвал случайный неопределенный метод в nil_query, ошибка выглядела бы так:

NoMethodError: undefined method `random_method' for "\e[36;1mnil_query\e[0m":NilQuery

Есть ли у них какие-нибудь хорошие решения? Я попытался немного изучить красивую печать, но изо всех сил пытался найти хорошую документацию о том, как ее использовать.

TL; DR - Как я могу изменить цвет и формат, который показывает конкретный объект или значение, как в Pry?

1 ответ

Прай использует Coderay для форматирования цвета вывода. Вам может потребоваться настроить сканер Ruby для определения нового токена (аналогично:float,:integer,:constant и т. Д.), А затем определить форматирование / цвет для терминала.

Другие вопросы по тегам