我构建一个与nil有些相似的对象,它被称为nil_query,是一个名为NilQuery的单例类的实例。
我希望这个类在Pry中调用时以类似的方式显示true,false和nil,这意味着我希望它在其中显示自己的特殊颜色,而不仅仅是白色:
我的第一个想法(这就是我在上面的图片中得到的结果)只是将NilQuery的inspect方法中的字符串更改为包含颜色格式:
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中显示的颜色和格式?
答案 0 :(得分:1)
Pry使用Coderay格式化输出的颜色。您可能需要自定义Ruby scanner以定义新标记(类似于:float,:integer,:constant等),然后定义terminal的格式/颜色。