MCPcopy Index your code
hub / github.com/nodejs/node / visit_Template

Method visit_Template

tools/inspector_protocol/jinja2/compiler.py:695–809  ·  view source on GitHub ↗
(self, node, frame=None)

Source from the content-addressed store, hash-verified

693 # -- Statement Visitors
694
695 def visit_Template(self, node, frame=None):
696 assert frame is None, 'no root frame allowed'
697 eval_ctx = EvalContext(self.environment, self.name)
698
699 from jinja2.runtime import __all__ as exported
700 self.writeline('from __future__ import %s' % ', '.join(code_features))
701 self.writeline('from jinja2.runtime import ' + ', '.join(exported))
702
703 if self.environment.is_async:
704 self.writeline('from jinja2.asyncsupport import auto_await, '
705 'auto_aiter, make_async_loop_context')
706
707 # if we want a deferred initialization we cannot move the
708 # environment into a local name
709 envenv = not self.defer_init and ', environment=environment' or ''
710
711 # do we have an extends tag at all? If not, we can save some
712 # overhead by just not processing any inheritance code.
713 have_extends = node.find(nodes.Extends) is not None
714
715 # find all blocks
716 for block in node.find_all(nodes.Block):
717 if block.name in self.blocks:
718 self.fail('block %r defined twice' % block.name, block.lineno)
719 self.blocks[block.name] = block
720
721 # find all imports and import them
722 for import_ in node.find_all(nodes.ImportedName):
723 if import_.importname not in self.import_aliases:
724 imp = import_.importname
725 self.import_aliases[imp] = alias = self.temporary_identifier()
726 if '.' in imp:
727 module, obj = imp.rsplit('.', 1)
728 self.writeline('from %s import %s as %s' %
729 (module, obj, alias))
730 else:
731 self.writeline('import %s as %s' % (imp, alias))
732
733 # add the load name
734 self.writeline('name = %r' % self.name)
735
736 # generate the root render function.
737 self.writeline('%s(context, missing=missing%s):' %
738 (self.func('root'), envenv), extra=1)
739 self.indent()
740 self.write_commons()
741
742 # process the root
743 frame = Frame(eval_ctx)
744 if 'self' in find_undeclared(node.body, ('self',)):
745 ref = frame.symbols.declare_parameter('self')
746 self.writeline('%s = TemplateReference(context)' % ref)
747 frame.symbols.analyze_node(node)
748 frame.toplevel = frame.rootlevel = True
749 frame.require_output_check = have_extends and not self.has_known_extends
750 if have_extends:
751 self.writeline('parent_template = None')
752 self.enter_frame(frame)

Callers

nothing calls this directly

Calls 15

writelineMethod · 0.95
failMethod · 0.95
temporary_identifierMethod · 0.95
funcMethod · 0.95
indentMethod · 0.95
write_commonsMethod · 0.95
enter_frameMethod · 0.95
pull_dependenciesMethod · 0.95
blockvisitMethod · 0.95
leave_frameMethod · 0.95
outdentMethod · 0.95
EvalContextClass · 0.90

Tested by

no test coverage detected