Module: Kucodiff

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

Constant Summary collapse

VERSION =
"0.6.1"

Class Method Summary collapse

Class Method Details

.diff(files, ignore: false, indent_pod: true, 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
# File 'lib/kucodiff.rb', line 5

def diff(files, ignore: false, indent_pod: true, expected: {})
  raise ArgumentError, "Need 2+ files" if files.size < 2

  base = files.shift

  diff = files.each_with_object({}) do |other, all|
    # re-read both since we modify them
    base_template = read(base)
    other_template = read(other)

    pod_indented!(base_template, other_template) if indent_pod
    result = different_keys(base_template, other_template)
    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