MCPcopy Create free account
hub / github.com/nodejs/node / visit_Block

Method visit_Block

deps/v8/third_party/jinja2/compiler.py:944–985  ·  view source on GitHub ↗

Call a block and register it for the template.

(self, node: nodes.Block, frame: Frame)

Source from the content-addressed store, hash-verified

942 self.writeline(f"debug_info = {debug_kv_str!r}")
943
944 def visit_Block(self, node: nodes.Block, frame: Frame) -> None:
945 """Call a block and register it for the template."""
946 level = 0
947 if frame.toplevel:
948 # if we know that we are a child template, there is no need to
949 # check if we are one
950 if self.has_known_extends:
951 return
952 if self.extends_so_far > 0:
953 self.writeline("if parent_template is None:")
954 self.indent()
955 level += 1
956
957 if node.scoped:
958 context = self.derive_context(frame)
959 else:
960 context = self.get_context_ref()
961
962 if node.required:
963 self.writeline(f"if len(context.blocks[{node.name!r}]) <= 1:", node)
964 self.indent()
965 self.writeline(
966 f'raise TemplateRuntimeError("Required block {node.name!r} not found")',
967 node,
968 )
969 self.outdent()
970
971 if not self.environment.is_async and frame.buffer is None:
972 self.writeline(
973 f"yield from context.blocks[{node.name!r}][0]({context})", node
974 )
975 else:
976 self.writeline(
977 f"{self.choose_async()}for event in"
978 f" context.blocks[{node.name!r}][0]({context}):",
979 node,
980 )
981 self.indent()
982 self.simple_write("event", frame)
983 self.outdent()
984
985 self.outdent(level)
986
987 def visit_Extends(self, node: nodes.Extends, frame: Frame) -> None:
988 """Calls the extender."""

Callers

nothing calls this directly

Calls 7

writelineMethod · 0.95
indentMethod · 0.95
derive_contextMethod · 0.95
get_context_refMethod · 0.95
outdentMethod · 0.95
choose_asyncMethod · 0.95
simple_writeMethod · 0.95

Tested by

no test coverage detected