Total Complexity | 3 |
Total Lines | 25 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | """Provides custom extension, exposing a ``hello`` command.""" |
||
2 | from jinja2 import nodes |
||
3 | from jinja2.ext import Extension |
||
4 | |||
5 | |||
6 | class HelloExtension(Extension): |
||
7 | """Simple jinja2 extension for cookiecutter test purposes.""" |
||
8 | |||
9 | tags = {'hello'} |
||
10 | |||
11 | def __init__(self, environment): |
||
12 | """Hello Extension Constructor.""" |
||
13 | super().__init__(environment) |
||
14 | |||
15 | def _hello(self, name): |
||
16 | """Do actual tag replace when invoked by parser.""" |
||
17 | return f'Hello {name}!' |
||
18 | |||
19 | def parse(self, parser): |
||
20 | """Work when something match `tags` variable.""" |
||
21 | lineno = next(parser.stream).lineno |
||
22 | node = parser.parse_expression() |
||
23 | call_method = self.call_method('_hello', [node], lineno=lineno) |
||
24 | return nodes.Output([call_method], lineno=lineno) |
||
25 |