class

Similar::Algorithms::Compact(D, Old, New)

Inherits Similar::Algorithms::DiffHook < Reference < Object

A DiffHook that reduces the size of diff by simplifying complex change patterns.

This hook attempts to reduce the number of diff operations by merging adjacent operations and simplifying complex change patterns. It's primarily used internally to clean up diff results.

Constructors

new(d : D, old : Old, new : New)

Creates a new compact hook wrapping another hook.

Source

Instance methods

delete(old_index : Int32, old_len : Int32, new_index : Int32) : Nil

Called when a section of length old_len, starting at old_index, needs to be deleted from the old version.

Source
equal(old_index : Int32, new_index : Int32, len : Int32) : Nil

Called when lines with indices old_index (in the old version) and new_index (in the new version) start an section equal in both versions, of length len.

Source
finish

Always called at the end of the algorithm.

Source
inner

Extracts the inner hook.

Source
insert(old_index : Int32, new_index : Int32, new_len : Int32) : Nil

Called when a section of the new version, of length new_len and starting at new_index, needs to be inserted at position old_index.

Source
into_inner

Extracts the inner hook.

Source
replace(old_index : Int32, old_len : Int32, new_index : Int32, new_len : Int32) : Nil

Called when a section of the old version, starting at index old_index and of length old_len, needs to be replaced with a section of length new_len, starting at new_index, of the new version.

The default implementations invokes delete and insert.

You can use the Replace hook to automatically generate these.

Source