module RubyWasmUi::Utils::Arrays
def self.diff(old_array, new_array)
-
(Hash)- Hash containing added and removed items
Parameters:
-
new_array(Array) -- -
old_array(Array) --
def self.diff(old_array, new_array) { added: (new_array - old_array).uniq, removed: (old_array - new_array).uniq } end
def self.diff_sequence(old_array, new_array, equal_proc = ->(a, b) { a == b })
-
(Array)- sequence of operations to transform old_array into new_array
Parameters:
-
equal_proc(Proc) -- -
new_array(Array) -- -
old_array(Array) --
def self.diff_sequence(old_array, new_array, equal_proc = ->(a, b) { a == b }) sequence = [] array = ArrayWithOriginalIndices.new(old_array, equal_proc) index = 0 while index < new_array.length if array.is_removal?(index, new_array) sequence << array.remove_item(index) next end if array.is_noop?(index, new_array) sequence << array.noop_item(index) index += 1 next end item = new_array[index] if array.is_addition?(item, index) sequence << array.add_item(item, index) index += 1 next end sequence << array.move_item(item, index) index += 1 end sequence.concat(array.remove_item_after(new_array.length)) sequence end
def self.without_nulls(arr)
-
(Array)-
Parameters:
-
arr(Array) --
def self.without_nulls(arr) arr.reject { |item| item.nil? } end