- A simple block based truncation function for jinja2. For when a filter just doesn't work.
Block based truncate tag for Jinja2
1 from jinja2 import nodes
2 from jinja2.ext import Extension
3
4 class TruncatedBlockExtension(Extension):
5 tags = (['block_truncate_chars'])
6
7 def parse(self, parser):
8 lineno = parser.stream.next().lineno
9
10 args = [parser.parse_expression()]
11
12 body = parser.parse_statements(['name:endblock_truncate_chars'], drop_needle=True)
13
14 return nodes.CallBlock(self.call_method('_do_truncate', args),
15 [], [], body).set_lineno(lineno)
16
17 def _do_truncate(self, length, caller):
18 from jinja2.filters import do_truncate
19 rv = caller()
20 return do_truncate(rv, length)
21 block_truncate_chars = TruncatedBlockExtension
Comments
Sign in to leave a comment.

