3 aG�\� � @ s4 d Z ddlmZ G dd� de�ZG dd� de�ZdS )z� jinja2.visitor ~~~~~~~~~~~~~~ This module implements a visitor for the nodes. :copyright: (c) 2017 by the Jinja Team. :license: BSD. � )�Nodec @ s( e Zd ZdZdd� Zdd� Zdd� ZdS ) �NodeVisitora 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. c C s d|j j }t| |d�S )z�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. Zvisit_N)� __class__�__name__�getattr)�self�node�method� r �/usr/lib/python3.6/visitor.py�get_visitor s zNodeVisitor.get_visitorc O s4 | j |�}|dk r"||f|�|�S | j|f|�|�S )z Visit a node.N)r � generic_visit)r r �args�kwargs�fr r r �visit"