0

我正在做一组差异并使用 awesome_print gem 打印差异:

 ap (a | b ) - (a & b)

这会打印出两个不同的项目。

有没有办法突出或着色两者之间的差异?

4

1 回答 1

0

我不明白你怎么能做你想做的事。您可能知道,Awesome Print 允许您指定不同对象(数组、散列、字符串等)的颜色。Awesome Print 文档在这里

假设您希望打印一个包含符号 :cat 和字符串 "dog" 的集合,其中集合 "blue"、:cat "purplish" 和 "dog" 呈绿色。您可以按如下方式执行此操作(看起来数组的颜色已应用于集合,这是有道理的):

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如果您想为and的每个元素分配特定的颜色b,您可能需要执行以下操作:

set.each { |e| ap e, options = { color: { string: color_map(e) } } }

color_map你要写的方法在哪里。

您可能需要先将JSON对象转换为字符串(如果它还不是字符串——我不熟悉JSON)。

于 2014-04-02T07:23:04.333 回答