Handles includes.
(self, node, frame)
| 888 | self.extends_so_far += 1 |
| 889 | |
| 890 | def visit_Include(self, node, frame): |
| 891 | """Handles includes.""" |
| 892 | if node.ignore_missing: |
| 893 | self.writeline('try:') |
| 894 | self.indent() |
| 895 | |
| 896 | func_name = 'get_or_select_template' |
| 897 | if isinstance(node.template, nodes.Const): |
| 898 | if isinstance(node.template.value, string_types): |
| 899 | func_name = 'get_template' |
| 900 | elif isinstance(node.template.value, (tuple, list)): |
| 901 | func_name = 'select_template' |
| 902 | elif isinstance(node.template, (nodes.Tuple, nodes.List)): |
| 903 | func_name = 'select_template' |
| 904 | |
| 905 | self.writeline('template = environment.%s(' % func_name, node) |
| 906 | self.visit(node.template, frame) |
| 907 | self.write(', %r)' % self.name) |
| 908 | if node.ignore_missing: |
| 909 | self.outdent() |
| 910 | self.writeline('except TemplateNotFound:') |
| 911 | self.indent() |
| 912 | self.writeline('pass') |
| 913 | self.outdent() |
| 914 | self.writeline('else:') |
| 915 | self.indent() |
| 916 | |
| 917 | skip_event_yield = False |
| 918 | if node.with_context: |
| 919 | loop = self.environment.is_async and 'async for' or 'for' |
| 920 | self.writeline('%s event in template.root_render_func(' |
| 921 | 'template.new_context(context.get_all(), True, ' |
| 922 | '%s)):' % (loop, self.dump_local_context(frame))) |
| 923 | elif self.environment.is_async: |
| 924 | self.writeline('for event in (await ' |
| 925 | 'template._get_default_module_async())' |
| 926 | '._body_stream:') |
| 927 | else: |
| 928 | if supports_yield_from: |
| 929 | self.writeline('yield from template._get_default_module()' |
| 930 | '._body_stream') |
| 931 | skip_event_yield = True |
| 932 | else: |
| 933 | self.writeline('for event in template._get_default_module()' |
| 934 | '._body_stream:') |
| 935 | |
| 936 | if not skip_event_yield: |
| 937 | self.indent() |
| 938 | self.simple_write('event', frame) |
| 939 | self.outdent() |
| 940 | |
| 941 | if node.ignore_missing: |
| 942 | self.outdent() |
| 943 | |
| 944 | def visit_Import(self, node, frame): |
| 945 | """Visit regular imports.""" |
nothing calls this directly
no test coverage detected