docs: def emit_tep(self, tep, typ="all", **context):
          """Emit a event(with tep) and gets the template extension point data(html code).
  
          Please use this function in the template. The extension point needs to be defined by itself.
  
          Suppose you have an extension point named `tep`, only need to enable custom extension points in the template, for examples::
  
              #: It can render HTML code and files for an template extension point,
              #: or even pass in extra data at render time
              {{ emit_tep('tep', data=data) }}
  
  
          :param tep: str: Template extension point name, which is unique, a tep parsing result is list, within which can be HTML code and files
  
          :param typ: str: Render type, default value = "all"
                          all - render all, is default;
                          fil - render HTML file;
                          cod - render HTML code
  
          :param context: dict: Keyword parameter, additional data passed to the template
  
          :returns: html code with :class:`~jinja2.Markup`.
          """
          e = self.get_all_tep.get(tep) or dict(HTMLFile=[], HTMLString=[])
          #: Disposable template sequence
          if self.stpl is True:
              e["HTMLFile"] = map(lambda tpl: tpl.split('@')[-1], sorted(e['HTMLFile'], key=lambda x: x.split('@')[0], reverse=self.stpl_reverse))
              e["HTMLString"] = map(lambda tpl: tpl.split('@')[-1], sorted(e['HTMLString'], key=lambda x: x.split('@')[0], reverse=self.stpl_reverse))
          typ = "all" if not typ in ("fil", "cod") else typ
          mtf = jinja2.Markup("".join([render_template(i, **context) for i in e["HTMLFile"]]))
          mtc = jinja2.Markup("".join(e["HTMLString"]))
          if typ == "fil":
              return mtf
          elif typ == "cod":
              return mtc
          else:
              return mtf + mtc