diff options
Diffstat (limited to 'src/model')
| -rw-r--r-- | src/model/typeset.rs | 16 |
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 |
