golden hour
/usr/lib/python2.7/site-packages/jinja2
⬆️ Go Up
Upload
File/Folder
Size
Actions
__init__.py
2.22 KB
Del
OK
__init__.pyc
2.38 KB
Del
OK
__init__.pyo
2.38 KB
Del
OK
_compat.py
3.95 KB
Del
OK
_compat.pyc
5.99 KB
Del
OK
_compat.pyo
5.99 KB
Del
OK
_stringdefs.py
394.82 KB
Del
OK
_stringdefs.pyc
203.64 KB
Del
OK
_stringdefs.pyo
203.64 KB
Del
OK
bccache.py
12.04 KB
Del
OK
bccache.pyc
13.85 KB
Del
OK
bccache.pyo
13.85 KB
Del
OK
compiler.py
60.34 KB
Del
OK
compiler.pyc
53.21 KB
Del
OK
compiler.pyo
53.15 KB
Del
OK
constants.py
1.59 KB
Del
OK
constants.pyc
1.65 KB
Del
OK
constants.pyo
1.65 KB
Del
OK
debug.py
10.72 KB
Del
OK
debug.pyc
10.45 KB
Del
OK
debug.pyo
10.37 KB
Del
OK
defaults.py
1.03 KB
Del
OK
defaults.pyc
1.46 KB
Del
OK
defaults.pyo
1.46 KB
Del
OK
environment.py
46.14 KB
Del
OK
environment.pyc
45 KB
Del
OK
environment.pyo
44.59 KB
Del
OK
exceptions.py
4.32 KB
Del
OK
exceptions.pyc
6.11 KB
Del
OK
exceptions.pyo
6.11 KB
Del
OK
ext.py
24.49 KB
Del
OK
ext.pyc
23.5 KB
Del
OK
ext.pyo
23.43 KB
Del
OK
filters.py
29.14 KB
Del
OK
filters.pyc
33.13 KB
Del
OK
filters.pyo
33.13 KB
Del
OK
lexer.py
27.73 KB
Del
OK
lexer.pyc
22.11 KB
Del
OK
lexer.pyo
21.95 KB
Del
OK
loaders.py
16.64 KB
Del
OK
loaders.pyc
18.5 KB
Del
OK
loaders.pyo
18.5 KB
Del
OK
meta.py
4.09 KB
Del
OK
meta.pyc
3.92 KB
Del
OK
meta.pyo
3.92 KB
Del
OK
nodes.py
28.23 KB
Del
OK
nodes.pyc
41.54 KB
Del
OK
nodes.pyo
41.06 KB
Del
OK
optimizer.py
2.25 KB
Del
OK
optimizer.pyc
2.78 KB
Del
OK
optimizer.pyo
2.78 KB
Del
OK
parser.py
34.36 KB
Del
OK
parser.pyc
30.5 KB
Del
OK
parser.pyo
30.5 KB
Del
OK
runtime.py
19.1 KB
Del
OK
runtime.pyc
22.5 KB
Del
OK
runtime.pyo
22.46 KB
Del
OK
sandbox.py
18.09 KB
Del
OK
sandbox.pyc
17.23 KB
Del
OK
sandbox.pyo
17.23 KB
Del
OK
tests.py
3.36 KB
Del
OK
tests.pyc
4.93 KB
Del
OK
tests.pyo
4.93 KB
Del
OK
testsuite
-
Del
OK
utils.py
15.79 KB
Del
OK
utils.pyc
19.08 KB
Del
OK
utils.pyo
19.08 KB
Del
OK
visitor.py
3.24 KB
Del
OK
visitor.pyc
3.72 KB
Del
OK
visitor.pyo
3.72 KB
Del
OK
Edit: visitor.py
# -*- coding: utf-8 -*- """ jinja2.visitor ~~~~~~~~~~~~~~ This module implements a visitor for the nodes. :copyright: (c) 2010 by the Jinja Team. :license: BSD. """ from jinja2.nodes import Node class NodeVisitor(object): """Walks the abstract syntax tree and call visitor functions for every node found. The visitor functions may return values which will be forwarded by the `visit` method. Per default the visitor functions for the nodes are ``'visit_'`` + class name of the node. So a `TryFinally` node visit function would be `visit_TryFinally`. This behavior can be changed by overriding the `get_visitor` function. If no visitor function exists for a node (return value `None`) the `generic_visit` visitor is used instead. """ def get_visitor(self, node): """Return the visitor function for this node or `None` if no visitor exists for this node. In that case the generic visit function is used instead. """ method = 'visit_' + node.__class__.__name__ return getattr(self, method, None) def visit(self, node, *args, **kwargs): """Visit a node.""" f = self.get_visitor(node) if f is not None: return f(node, *args, **kwargs) return self.generic_visit(node, *args, **kwargs) def generic_visit(self, node, *args, **kwargs): """Called if no explicit visitor function exists for a node.""" for node in node.iter_child_nodes(): self.visit(node, *args, **kwargs) class NodeTransformer(NodeVisitor): """Walks the abstract syntax tree and allows modifications of nodes. The `NodeTransformer` will walk the AST and use the return value of the visitor functions to replace or remove the old node. If the return value of the visitor function is `None` the node will be removed from the previous location otherwise it's replaced with the return value. The return value may be the original node in which case no replacement takes place. """ def generic_visit(self, node, *args, **kwargs): for field, old_value in node.iter_fields(): if isinstance(old_value, list): new_values = [] for value in old_value: if isinstance(value, Node): value = self.visit(value, *args, **kwargs) if value is None: continue elif not isinstance(value, Node): new_values.extend(value) continue new_values.append(value) old_value[:] = new_values elif isinstance(old_value, Node): new_node = self.visit(old_value, *args, **kwargs) if new_node is None: delattr(node, field) else: setattr(node, field, new_node) return node def visit_list(self, node, *args, **kwargs): """As transformers may return lists in some places this method can be used to enforce a list as return value. """ rv = self.visit(node, *args, **kwargs) if not isinstance(rv, list): rv = [rv] return rv
Save