Skip to content

Commit 475f30d

Browse files
author
Adam Gardiner
committed
Algorithm fixes for multi-field child, include move in update details
1 parent 88deabe commit 475f30d

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

lib/csv-diff/algorithm.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def diff_sources(left, right, key_fields, diff_fields, options = {})
5151
right_pos = right_common.index(key)
5252
if left_pos != right_pos
5353
# Move
54-
diffs[key].merge!(id.merge(:action => 'Move',
54+
diffs[key].merge!(id.merge!(:action => 'Move',
5555
:sibling_position => [left_idx + 1, right_idx + 1]))
5656
#puts "Move #{left_idx} -> #{right_idx}: #{key}"
5757
end
@@ -72,8 +72,8 @@ def diff_sources(left, right, key_fields, diff_fields, options = {})
7272
(left_keys - right_keys).each do |key|
7373
# Delete
7474
key_vals = key.split('~')
75-
child = key_vals.pop
76-
parent = key_vals.join('~')
75+
parent = key_vals[0...parent_fields].join('~')
76+
child = key_vals[parent_fields..-1].join('~')
7777
left_parent = left_index[parent]
7878
left_value = left_values[key]
7979
left_idx = left_parent.index(key)

0 commit comments

Comments
 (0)