autoescaping information at call time instead of macro define time.
- Ported a modified version of the `tojson` filter from Flask to Jinja2
and hooked it up with the new policy framework.
+- Block sets are now marked `safe` by default.
Version 2.8.2
-------------
self.blockvisit(node.body, block_frame)
self.newline(node)
self.visit(node.target, frame)
- self.write(' = concat(%s)' % block_frame.buffer)
+ self.write(' = (Markup if context.eval_ctx.autoescape '
+ 'else identity)(concat(%s))' % block_frame.buffer)
self.pop_assign_tracking(frame)
self.leave_frame(block_frame)
tmpl = env_trim.from_string('{% set foo %}42{% endset %}{{ foo }}')
assert tmpl.render() == '42'
assert tmpl.module.foo == u'42'
+
+ def test_block_escaping(self):
+ env = Environment(autoescape=True)
+ tmpl = env.from_string('{% set foo %}<em>{{ test }}</em>'
+ '{% endset %}foo: {{ foo }}')
+ assert tmpl.render(test='<unsafe>') == 'foo: <em><unsafe></em>'