summaryrefslogtreecommitdiff
path: root/src/eval/mod.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-01-29 22:32:30 +0100
committerLaurenz <laurmaedje@gmail.com>2022-01-29 22:32:57 +0100
commitaeb036f4dc2ede271d6c0710e91fae605ecdac84 (patch)
tree1941fc92ba7240c1026a5f52e3a49496350f0255 /src/eval/mod.rs
parent44ebefbec23114d6ed7a96e7e3cb9078441aff31 (diff)
Fix that templates don't create a scope
Diffstat (limited to 'src/eval/mod.rs')
-rw-r--r--src/eval/mod.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/eval/mod.rs b/src/eval/mod.rs
index 05fa7eba..2fa07d49 100644
--- a/src/eval/mod.rs
+++ b/src/eval/mod.rs
@@ -187,7 +187,7 @@ fn process_nodes(
ctx: &mut EvalContext,
nodes: &mut impl Iterator<Item = MarkupNode>,
) -> TypResult<Node> {
- let prev = mem::take(&mut ctx.styles);
+ let prev_styles = mem::take(&mut ctx.styles);
let mut seq = Vec::with_capacity(nodes.size_hint().1.unwrap_or_default());
while let Some(piece) = nodes.next() {
// Need to deal with wrap here.
@@ -201,7 +201,7 @@ fn process_nodes(
seq.push(Styled::new(node, ctx.styles.clone()));
}
- ctx.styles = prev;
+ ctx.styles = prev_styles;
Ok(Node::Sequence(seq))
}
@@ -461,7 +461,10 @@ impl Eval for TemplateExpr {
type Output = Node;
fn eval(&self, ctx: &mut EvalContext) -> TypResult<Self::Output> {
- self.body().eval(ctx)
+ ctx.scopes.enter();
+ let node = self.body().eval(ctx)?;
+ ctx.scopes.exit();
+ Ok(node)
}
}