From 3d2f1d2d6cc34fa64c56abd335dd14ea4c932a6c Mon Sep 17 00:00:00 2001 From: Laurenz Date: Fri, 24 Nov 2023 14:50:40 +0100 Subject: [PATCH] Simplify counting a bit --- crates/typst/src/introspection/counter.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/crates/typst/src/introspection/counter.rs b/crates/typst/src/introspection/counter.rs index 16403320a..7b0736818 100644 --- a/crates/typst/src/introspection/counter.rs +++ b/crates/typst/src/introspection/counter.rs @@ -284,12 +284,9 @@ impl Counter { } } - if let Some(update) = match elem.to::() { - Some(elem) => Some(elem.update().clone()), - None => match elem.with::() { - Some(countable) => countable.update().clone(), - None => Some(CounterUpdate::Step(NonZeroUsize::ONE)), - }, + if let Some(update) = match elem.with::() { + Some(countable) => countable.update(), + None => Some(CounterUpdate::Step(NonZeroUsize::ONE)), } { state.update(&mut vt, update)?; } @@ -647,7 +644,7 @@ impl Show for DisplayElem { } /// Executes an update of a counter. -#[elem(Locatable, Show)] +#[elem(Locatable, Show, Count)] struct UpdateElem { /// The key that identifies the counter. #[required] @@ -665,6 +662,12 @@ impl Show for UpdateElem { } } +impl Count for UpdateElem { + fn update(&self) -> Option { + Some(self.update.clone()) + } +} + /// An specialized handler of the page counter that tracks both the physical /// and the logical page counter. #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]