class Hashdiff::LinearCompareArray
def call
def call return [] if old_array.empty? && new_array.empty? self.old_index = 0 self.new_index = 0 # by comparing the array lengths we can expect that a number of items # are either added or removed self.expected_additions = new_array.length - old_array.length loop do if extra_items_in_old_array? append_deletion(old_array[old_index], old_index) elsif extra_items_in_new_array? append_addition(new_array[new_index], new_index) else compare_at_index end self.old_index = old_index + 1 self.new_index = new_index + 1 break if iterated_through_both_arrays? end changes end