OXIESEC PANEL
- Current Dir:
/
/
snap
/
core
/
17200
/
usr
/
lib
/
python3
/
dist-packages
/
jinja2
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/18/2024 07:58:21 PM
rwxr-xr-x
📄
__init__.py
2.27 KB
07/26/2015 05:49:40 PM
rw-r--r--
📁
__pycache__
-
02/18/2024 07:58:21 PM
rwxr-xr-x
📄
_compat.py
3.04 KB
05/25/2015 09:40:18 AM
rw-r--r--
📄
_stringdefs.py
394.82 KB
08/08/2014 02:42:36 PM
rw-r--r--
📄
bccache.py
12.49 KB
08/08/2014 02:42:36 PM
rw-r--r--
📄
compiler.py
62.35 KB
05/25/2015 10:20:55 AM
rw-r--r--
📄
constants.py
1.59 KB
08/08/2014 02:42:36 PM
rw-r--r--
📄
debug.py
11.28 KB
05/25/2015 10:25:02 AM
rw-r--r--
📄
defaults.py
1.03 KB
05/25/2015 09:40:18 AM
rw-r--r--
📄
environment.py
46.99 KB
05/25/2015 09:40:18 AM
rw-r--r--
📄
exceptions.py
4.32 KB
08/08/2014 02:42:36 PM
rw-r--r--
📄
ext.py
24.48 KB
08/08/2014 02:42:36 PM
rw-r--r--
📄
filters.py
29.81 KB
01/22/2024 09:48:19 AM
rw-r--r--
📄
lexer.py
27.76 KB
08/08/2014 02:42:36 PM
rw-r--r--
📄
loaders.py
16.97 KB
07/26/2015 05:43:00 PM
rw-r--r--
📄
meta.py
4.1 KB
05/25/2015 09:40:18 AM
rw-r--r--
📄
nodes.py
28.31 KB
01/22/2024 09:48:19 AM
rw-r--r--
📄
optimizer.py
2.25 KB
08/08/2014 02:42:36 PM
rw-r--r--
📄
parser.py
34.61 KB
05/25/2015 09:40:18 AM
rw-r--r--
📄
runtime.py
22 KB
05/25/2015 09:40:18 AM
rw-r--r--
📄
sandbox.py
17 KB
01/22/2024 09:48:19 AM
rw-r--r--
📄
tests.py
4.03 KB
05/25/2015 09:40:18 AM
rw-r--r--
📄
utils.py
16.32 KB
01/22/2024 09:48:19 AM
rw-r--r--
📄
visitor.py
3.24 KB
08/08/2014 02:42:36 PM
rw-r--r--
Editing: optimizer.py
Close
# -*- coding: utf-8 -*- """ jinja2.optimizer ~~~~~~~~~~~~~~~~ The jinja optimizer is currently trying to constant fold a few expressions and modify the AST in place so that it should be easier to evaluate it. Because the AST does not contain all the scoping information and the compiler has to find that out, we cannot do all the optimizations we want. For example loop unrolling doesn't work because unrolled loops would have a different scoping. The solution would be a second syntax tree that has the scoping rules stored. :copyright: (c) 2010 by the Jinja Team. :license: BSD. """ from jinja2 import nodes from jinja2.visitor import NodeTransformer def optimize(node, environment): """The context hint can be used to perform an static optimization based on the context given.""" optimizer = Optimizer(environment) return optimizer.visit(node) class Optimizer(NodeTransformer): def __init__(self, environment): self.environment = environment def visit_If(self, node): """Eliminate dead code.""" # do not optimize ifs that have a block inside so that it doesn't # break super(). if node.find(nodes.Block) is not None: return self.generic_visit(node) try: val = self.visit(node.test).as_const() except nodes.Impossible: return self.generic_visit(node) if val: body = node.body else: body = node.else_ result = [] for node in body: result.extend(self.visit_list(node)) return result def fold(self, node): """Do constant folding.""" node = self.generic_visit(node) try: return nodes.Const.from_untrusted(node.as_const(), lineno=node.lineno, environment=self.environment) except nodes.Impossible: return node visit_Add = visit_Sub = visit_Mul = visit_Div = visit_FloorDiv = \ visit_Pow = visit_Mod = visit_And = visit_Or = visit_Pos = visit_Neg = \ visit_Not = visit_Compare = visit_Getitem = visit_Getattr = visit_Call = \ visit_Filter = visit_Test = visit_CondExpr = fold del fold