summaryrefslogtreecommitdiff
path: root/src/eval
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-02-20 23:54:35 +0100
committerLaurenz <laurmaedje@gmail.com>2022-02-20 23:54:46 +0100
commit61761604e431cbb1f0bc66671e90c20aa19f98b4 (patch)
treeaeadde9e13c4e38d2ef8f406913eb813b4c1f5b8 /src/eval
parent43556a74aa5918efa2fe3320ddc41f976b8c7446 (diff)
Page style list fix
Diffstat (limited to 'src/eval')
-rw-r--r--src/eval/template.rs26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/eval/template.rs b/src/eval/template.rs
index 465e9195..a1d2297d 100644
--- a/src/eval/template.rs
+++ b/src/eval/template.rs
@@ -394,10 +394,10 @@ impl<'a> Builder<'a> {
});
}
Template::Pagebreak => {
- self.finish_page(true, true, styles);
+ self.finish_page(vm, true, true, styles)?;
}
Template::Page(page) => {
- self.finish_page(false, false, styles);
+ self.finish_page(vm, false, false, styles)?;
if let Some(pages) = &mut self.pages {
pages.push(page.clone(), styles);
}
@@ -421,7 +421,9 @@ impl<'a> Builder<'a> {
let interruption = map.interruption();
match interruption {
- Some(Interruption::Page) => self.finish_page(false, true, styles),
+ Some(Interruption::Page) => {
+ self.finish_page(vm, false, true, styles)?
+ }
Some(Interruption::Par) => self.finish_par(styles),
None => {}
}
@@ -429,7 +431,9 @@ impl<'a> Builder<'a> {
self.process(vm, sub, styles)?;
match interruption {
- Some(Interruption::Page) => self.finish_page(true, false, styles),
+ Some(Interruption::Page) => {
+ self.finish_page(vm, true, false, styles)?
+ }
Some(Interruption::Par) => self.finish_par(styles),
None => {}
}
@@ -476,7 +480,14 @@ impl<'a> Builder<'a> {
}
/// Finish the currently built page run.
- fn finish_page(&mut self, keep_last: bool, keep_next: bool, styles: StyleChain<'a>) {
+ fn finish_page(
+ &mut self,
+ vm: &mut Vm,
+ keep_last: bool,
+ keep_next: bool,
+ styles: StyleChain<'a>,
+ ) -> TypResult<()> {
+ self.finish_list(vm)?;
self.finish_par(styles);
if let Some(pages) = &mut self.pages {
let (flow, shared) = mem::take(&mut self.flow).finish();
@@ -487,13 +498,12 @@ impl<'a> Builder<'a> {
}
}
self.keep_next = keep_next;
+ Ok(())
}
/// Finish everything.
fn finish(&mut self, vm: &mut Vm, styles: StyleChain<'a>) -> TypResult<()> {
- self.finish_list(vm)?;
- self.finish_page(true, false, styles);
- Ok(())
+ self.finish_page(vm, true, false, styles)
}
}