如何更改Pry中对象的输出颜色?

时间:2018-06-05 21:31:59

标签: ruby pry

我构建一个与nil有些相似的对象,它被称为nil_query,是一个名为NilQuery的单例类的实例。

我希望这个类在Pry中调用时以类似的方式显示true,false和nil,这意味着我希望它在其中显示自己的特殊颜色,而不仅仅是白色:

enter image description here

我的第一个想法(这就是我在上面的图片中得到的结果)只是将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中显示的颜色和格式?

1 个答案:

答案 0 :(得分:1)

Pry使用Coderay格式化输出的颜色。您可能需要自定义Ruby scanner以定义新标记(类似于:float,:integer,:constant等),然后定义terminal的格式/颜色。