5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/kucodiff.rb', line 5
def diff(files, ignore: false, indent_pod: false, expected: {})
raise ArgumentError, "Need 2+ files" if files.size < 2
base = files.shift
base_template = read(base)
diff = files.each_with_object({}) do |other, all|
other_template = read(other)
result =
if indent_pod
different_keys_pod_indented(base_template, other_template)
else
different_keys(base_template, other_template)
end
result.reject! { |k| k =~ ignore } if ignore
all["#{base}-#{other}"] = result.sort
end
expected.each do |k, v|
result = xor(diff[k] || [], v)
result.empty? ? diff.delete(k) : diff[k] = result
end
diff
end
|