diff options
Diffstat (limited to 'askama_shared')
-rw-r--r-- | askama_shared/src/generator.rs | 10 | ||||
-rw-r--r-- | askama_shared/src/heritage.rs | 13 |
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); + } + } _ => {} } } |