summaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
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