4
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/line_tracker.rb', line 4
def track_mutations!(file_diffs)
deletions = index_deletions(file_diffs)
file_deletions = deletions.delete(:files)
grouped_file_diffs(file_diffs).reduce(change_context()) do |acc, (file_name, file_diff)|
file_diff[:diffs].each do |diff|
file_deletes = (file_deletions[file_diff[:a_file_name]] || {})
diff.insertions.each_with_index do |insertion, i|
insertion = insertion.strip()
next if Line.meaningless?(insertion)
line_number = diff.insert_start + i - 1
if movement?(deletions, insertion)
index!(acc[:movements], file_name, line_number, deletions[insertion].shift())
else
changed_line = find_change(file_deletes, insertion)
index!(acc[:changes], file_name, line_number, changed_line) if changed_line
end
end
end
acc
end
end
|