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