| 545 | |
| 546 | |
| 547 | class _NamedBlock(_Node): |
| 548 | def __init__(self, name: str, body: _Node, template: Template, line: int) -> None: |
| 549 | self.name = name |
| 550 | self.body = body |
| 551 | self.template = template |
| 552 | self.line = line |
| 553 | |
| 554 | def each_child(self) -> Iterable["_Node"]: |
| 555 | return (self.body,) |
| 556 | |
| 557 | def generate(self, writer: "_CodeWriter") -> None: |
| 558 | block = writer.named_blocks[self.name] |
| 559 | with writer.include(block.template, self.line): |
| 560 | block.body.generate(writer) |
| 561 | |
| 562 | def find_named_blocks( |
| 563 | self, loader: Optional[BaseLoader], named_blocks: Dict[str, "_NamedBlock"] |
| 564 | ) -> None: |
| 565 | named_blocks[self.name] = self |
| 566 | _Node.find_named_blocks(self, loader, named_blocks) |
| 567 | |
| 568 | |
| 569 | class _ExtendsBlock(_Node): |