aboutsummaryrefslogtreecommitdiffstats
path: root/askama_shared
diff options
context:
space:
mode:
Diffstat (limited to 'askama_shared')
-rw-r--r--askama_shared/src/generator.rs10
-rw-r--r--askama_shared/src/heritage.rs13
2 files changed, 14 insertions, 9 deletions
diff --git a/askama_shared/src/generator.rs b/askama_shared/src/generator.rs
index fe02b8a..36ac55e 100644
--- a/askama_shared/src/generator.rs
+++ b/askama_shared/src/generator.rs
@@ -363,15 +363,7 @@ impl<'a, S: std::hash::BuildHasher> Generator<'a, S> {
self.write_loop(ctx, buf, ws1, var, iter, body, ws2);
}
Node::BlockDef(ws1, name, _, ws2) => {
- if AstLevel::Nested == level {
- panic!(
- "blocks ('{}') are only allowed at the top level of a template \
- or another block",
- name
- );
- }
- let outer = WS(ws1.0, ws2.1);
- self.write_block(buf, Some(name), outer);
+ self.write_block(buf, Some(name), WS(ws1.0, ws2.1));
}
Node::Include(ws, path) => {
size_hint += self.handle_include(ctx, buf, ws, path);
diff --git a/askama_shared/src/heritage.rs b/askama_shared/src/heritage.rs
index 86c7932..a747fcf 100644
--- a/askama_shared/src/heritage.rs
+++ b/askama_shared/src/heritage.rs
@@ -75,6 +75,19 @@ impl<'a> Context<'a> {
nested.push(nodes);
}
}
+ Node::Cond(branches, _) => {
+ for (_, _, nodes) in branches {
+ nested.push(nodes);
+ }
+ }
+ Node::Loop(_, _, _, nodes, _) => {
+ nested.push(nodes);
+ }
+ Node::Match(_, _, _, arms, _) => {
+ for (_, _, _, arm) in arms {
+ nested.push(arm);
+ }
+ }
_ => {}
}
}