lib/zonesync/diff.rb in zonesync-0.7.0 vs lib/zonesync/diff.rb in zonesync-0.8.0

- old
+ new

@@ -5,20 +5,22 @@ def self.call(from:, to:) new(from, to).call end def call - changes = ::Diff::LCS.sdiff(from.diffable_records, to.diffable_records) + changes = ::Diff::LCS.sdiff(from, to) changes.map do |change| case change.action when "-" - [:remove, [change.old_element.to_h]] + [:remove, [change.old_element]] when "!" - [:change, [change.old_element.to_h, change.new_element.to_h]] + [:change, [change.old_element, change.new_element]] when "+" - [:add, [change.new_element.to_h]] + [:add, [change.new_element]] end - end.compact + end.compact.sort_by do |operation| + operation.first + end.reverse # perform remove operations first end end end