Sort deletes first

This commit is contained in:
Andras Schmelczer 2025-06-21 13:18:13 +01:00
commit 7589e1bf2e
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C
2 changed files with 11 additions and 11 deletions

View file

@ -1,5 +1,5 @@
--- ---
source: reconcile/src/operation_transformation/edited_text.rs source: src/operation_transformation/edited_text.rs
expression: operations expression: operations
snapshot_kind: text snapshot_kind: text
--- ---
@ -8,11 +8,11 @@ EditedText {
operations: [ operations: [
OrderedOperation { OrderedOperation {
order: 0, order: 0,
operation: <insert 'Hello, my friend!' from index 0>, operation: <delete 'hello world!' from index 0>,
}, },
OrderedOperation { OrderedOperation {
order: 0, order: 12,
operation: <delete 'hello world!' from index 17>, operation: <insert 'Hello, my friend!' from index 0>,
}, },
OrderedOperation { OrderedOperation {
order: 12, order: 12,
@ -32,11 +32,11 @@ EditedText {
}, },
OrderedOperation { OrderedOperation {
order: 20, order: 20,
operation: <insert ' you doing? Albert' from index 25>, operation: <delete ' you? Adam' from index 25>,
}, },
OrderedOperation { OrderedOperation {
order: 20, order: 31,
operation: <delete ' you? Adam' from index 43>, operation: <insert ' you doing? Albert' from index 25>,
}, },
], ],
cursors: [], cursors: [],

View file

@ -41,20 +41,20 @@ where
} }
}, },
RawOperation::Equal(..) => Box::new( RawOperation::Equal(..) => Box::new(
maybe_previous_insert maybe_previous_delete
.take() .take()
.into_iter() .into_iter()
.chain(maybe_previous_delete.take()) .chain(maybe_previous_insert.take())
.chain(iter::once(next)), .chain(iter::once(next)),
) as Box<dyn Iterator<Item = RawOperation<T>>>, ) as Box<dyn Iterator<Item = RawOperation<T>>>,
}) })
.collect(); .collect();
if let Some(prev) = maybe_previous_insert { if let Some(prev) = maybe_previous_delete {
result.push(prev); result.push(prev);
} }
if let Some(prev) = maybe_previous_delete { if let Some(prev) = maybe_previous_insert {
result.push(prev); result.push(prev);
} }