Module: Kucodiff

Defined in:
lib/kucodiff.rb,
lib/kucodiff/version.rb

Constant Summary collapse

VERSION =
"0.3.0"

Class Method Summary collapse

Class Method Details

.diff(files, ignore: false, indent_pod: false, expected: {}) ⇒ Object

Raises:

  • (ArgumentError)


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