Ruby 如何使用Aweasome_print为两组之间的差异着色?
我正在使用awesome_print gem进行设置差异并打印差异:Ruby 如何使用Aweasome_print为两组之间的差异着色?,ruby,set,awesomeprint,Ruby,Set,Awesomeprint,我正在使用awesome_print gem进行设置差异并打印差异: ap (a | b ) - (a & b) 这将打印出两个不同的项目 有没有办法突出或着色两者之间的差异 我看不出你怎么能做你想做的事。正如您可能知道的,awesomeprint允许您指定不同对象(数组、哈希、字符串等)的颜色。最棒的打印文档是 假设您希望打印一个包含符号:cat和字符串“dog”的集合,其中集合“blue”、“purplish”和“dog”为绿色。您可以按如下操作(看起来数组的颜色应用于集合,这很
ap (a | b ) - (a & b)
这将打印出两个不同的项目
有没有办法突出或着色两者之间的差异 我看不出你怎么能做你想做的事。正如您可能知道的,awesomeprint允许您指定不同对象(数组、哈希、字符串等)的颜色。最棒的打印文档是 假设您希望打印一个包含符号:cat和字符串“dog”的集合,其中集合“blue”、“purplish”和“dog”为绿色。您可以按如下操作(看起来数组的颜色应用于集合,这很有意义): 该集合将显示如下:
set.each { |e| ap e, options = { color: { string: color_map(e) } } }
但是,当这两个元素属于同一类时,最好是分别打印它们,方法是分别调用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\u map
是您要编写的一种方法
您可能需要首先将
JSON
对象转换为字符串(如果它还不是字符串——我不熟悉JSON
) 你是说a
和b
是这样的(a | b)-(a&b)
是一个包含两个对象的集合,你希望这两个对象以不同的颜色显示吗?a
和b
的元素类别是什么?是的,它是一个包含两个对象的集合,我想对两个对象之间的差异进行着色。a和b是JSON blob。