44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/wrong/message/array_diff.rb', line 44
def self.compute_and_format(left, right)
diffs = Diff::LCS.sdiff(left, right)
left_arr = []
right_arr = []
diff_arr = []
diffs.each do |diff|
left_elem = diff.old_element.nil? ? "nil" : diff.old_element.inspect
right_elem = diff.new_element.nil? ? "nil" : diff.new_element.inspect
max_length = [left_elem.length, right_elem.length].max
left_arr << left_elem.ljust(max_length) unless diff.action == "+"
right_arr << right_elem.ljust(max_length) unless diff.action == "-"
diff_arr << (diff.action == "=" ? " ".ljust(max_length) : "^".ljust(max_length))
end
[format(left_arr),
format(right_arr),
" " + diff_arr.join(" ") + " "]
end
|