Как вы меняете цвет вывода для объекта в 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 и т. Д.), А затем определить форматирование / цвет для терминала.