docs: def template_exception_handler(fn, error_context, filename=None):
      """Calls the given function, attempting to catch any template-related errors, and
      converts the error to a Statik TemplateError instance. Returns the result returned
      by the function itself."""
      error_message = None
      if filename:
          error_context.update(filename=filename)
      try:
          return fn()
      except jinja2.TemplateSyntaxError as exc:
          error_context.update(filename=exc.filename, line_no=exc.lineno)
          error_message = exc.message
      except jinja2.TemplateError as exc:
          error_message = exc.message
      except Exception as exc:
          error_message = "%s" % exc
  
      raise TemplateError(message=error_message, context=error_context)