+ def render(self, content, context_vars):
+ bio = BytesIO()
+ pos = 0
+ while True:
+ new_pos = content.find(b"{{", pos)
+ if new_pos < 0:
+ break
+ bio.write(content[pos:new_pos])
+ end_pos = content.find(b"}}", new_pos)
+ assert end_pos > 0
+ full_tag = content[new_pos + 2:end_pos].split(b"|", 1)
+ value = context_vars[full_tag[0].strip().decode()]
+ if len(full_tag) == 2:
+ value = self.template_filters[full_tag[1].strip()](value)
+ bio.write(value.encode())
+ pos = end_pos + 2
+ bio.write(content[pos:])
+ return bio.getvalue()
+