Profile image for Ian Lewis IanLewis
A simple block based truncation function for jinja2. For when a filter just doesn't work.
Language
Python
Tags
block jinja2 string tag template truncate

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