From cb1fb40a0417fa7f0adbdd5fc75eed7bf7d964ee Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 13 Mar 2023 15:39:08 +0100 Subject: [PATCH 1/2] feat: add change difference --- rust/automerge/src/change.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/rust/automerge/src/change.rs b/rust/automerge/src/change.rs index b5cae7df..e8761148 100644 --- a/rust/automerge/src/change.rs +++ b/rust/automerge/src/change.rs @@ -112,6 +112,17 @@ impl Change { self.stored.iter_ops() } + pub fn difference(&self) -> (u32, u32) { + self.iter_ops() + .map(|op| match op.action { + 1 => (1, 0), + 3 => (0, 1), + _ => (0, 0), + }) + .reduce(|acc, x| (acc.0 + x.0, acc.1 + x.1)) + .unwrap_or_default() + } + pub fn extra_bytes(&self) -> &[u8] { self.stored.extra_bytes() } From e6e818443098182b98ebabb9f06a2c2bf833c2a0 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 13 Mar 2023 18:43:56 +0100 Subject: [PATCH 2/2] feat: add mark_saved --- rust/automerge/src/automerge.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rust/automerge/src/automerge.rs b/rust/automerge/src/automerge.rs index 86aa5f63..cd7c0b98 100644 --- a/rust/automerge/src/automerge.rs +++ b/rust/automerge/src/automerge.rs @@ -698,6 +698,11 @@ impl Automerge { bytes } + /// Mark the document as saved + pub fn mark_saved(&mut self) { + self.saved = self.get_heads(); + } + /// Save the changes since the last call to [Self::save`] /// /// The output of this will not be a compressed document format, but a series of individual