summaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-03-17 16:04:14 +0100
committerLaurenz <laurmaedje@gmail.com>2023-03-17 16:04:14 +0100
commit6d64d3e8e9123f3fa8166c8b710e2b2c61ed5898 (patch)
tree086961c2dfb8e63a437379898e9fc70c21cf8949 /src/model
parentc47e4cb4969836e7fb8955361728105555b6d722 (diff)
Query
Diffstat (limited to 'src/model')
-rw-r--r--src/model/typeset.rs16
1 files changed, 16 insertions, 0 deletions
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