From 6d64d3e8e9123f3fa8166c8b710e2b2c61ed5898 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Fri, 17 Mar 2023 16:04:14 +0100 Subject: Query --- src/model/typeset.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/model') diff --git a/src/model/typeset.rs b/src/model/typeset.rs index 4c8be135..e9cb3d2c 100644 --- a/src/model/typeset.rs +++ b/src/model/typeset.rs @@ -166,6 +166,22 @@ impl Introspector { self.all().filter(|node| selector.matches(node)).collect() } + /// Query for all metadata matches before the given id. + pub fn query_split( + &self, + selector: Selector, + id: StableId, + ) -> (Vec<&Content>, Vec<&Content>) { + let mut iter = self.all(); + let before = iter + .by_ref() + .take_while(|node| node.stable_id() != Some(id)) + .filter(|node| selector.matches(node)) + .collect(); + let after = iter.filter(|node| selector.matches(node)).collect(); + (before, after) + } + /// Find the page number for the given stable id. pub fn page(&self, id: StableId) -> NonZeroUsize { self.location(id).page -- cgit v1.2.3