我正在设置差异并使用awesome_print gem打印差异:
ap (a | b ) - (a & b)
这会打印出两个不同的项目。
有没有办法突出或着色两者之间的差异?
答案 0 :(得分:0)
我不知道你怎么能做你想要达到的目标。您可能知道,Awesome Print允许您指定不同对象(数组,散列,字符串等)的颜色。令人敬畏的打印文档是here。
假设您希望打印一个包含符号的集合:cat和字符串“dog”,其中设置为“blue”,:cat“purplish”和“dog”greenish。你可以这样做(如果数组的颜色应用于集合,这是有意义的):
require 'awesome_print'
require 'set'
set = [:cat, 'dog'].to_set
ap set, options={color: {array: :blue, symbol: :purpleish, string: :greenish}}
,集合将显示如下:
但是,当这两个元素属于同一个类时,您可以做的最好是单独打印它们,方法是为每个元素调用ap
:
set = ['cat', 'dog'].to_set
set.each_with_index { |e,i|
ap e, options = { color: { string: i.zero? ? :greenish : :red } } }
显示:
如果您想为a
和b
的每个元素指定特定颜色,您可能需要执行以下操作:
set.each { |e| ap e, options = { color: { string: color_map(e) } } }
其中color_map
是您要编写的方法。
您可能需要先将JSON
对象转换为字符串(如果它不是字符串 - 我不熟悉JSON
)。