From b72d749b23aba08860b62227062dd9e21923586b 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 be467a84..3595e353 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 ce5287da3ed81ec1084376d0967166a4c1fddead 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 0dd82253..bd1930e8 100644 --- a/rust/automerge/src/automerge.rs +++ b/rust/automerge/src/automerge.rs @@ -792,6 +792,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