Remove start_index from sorting

This commit is contained in:
Andras Schmelczer 2025-06-22 09:48:26 +01:00
parent d58b474669
commit 46d2e0c485
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C
2 changed files with 7 additions and 12 deletions

View file

@ -123,7 +123,11 @@ where
let (side, OrderedOperation { operation, order }, maybe_other_operation) =
match (maybe_left_op.clone(), maybe_right_op.clone()) {
(Some(left_op), Some(right_op)) => {
if left_op < right_op {
if left_op
.get_sort_key(seen_left_length)
.partial_cmp(&right_op.get_sort_key(seen_right_length))
== Some(std::cmp::Ordering::Less)
{
(Side::Left, left_op, maybe_right_op.clone())
} else {
(Side::Right, right_op, maybe_left_op.clone())

View file

@ -17,7 +17,7 @@ impl<T> OrderedOperation<T>
where
T: PartialEq + Clone + std::fmt::Debug,
{
pub fn get_sort_key(&self) -> (usize, usize, usize, String) {
pub fn get_sort_key(&self, insertion_index: usize) -> (usize, usize, usize, String) {
(
self.order,
match &self.operation {
@ -25,7 +25,7 @@ where
Operation::Insert { .. } => 2,
Operation::Equal { .. } => 3,
},
self.operation.start_index(),
insertion_index,
// Make sure that the ordering is deterministic regardless of which text
// is left or right.
match &self.operation {
@ -41,12 +41,3 @@ where
)
}
}
impl<T> PartialOrd for OrderedOperation<T>
where
T: PartialEq + Clone + std::fmt::Debug,
{
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
self.get_sort_key().partial_cmp(&other.get_sort_key())
}
}