code: def add_formatter(self, tag_name, render_func, **kwargs):
          
          options = TagOptions(tag_name.strip().lower(), **kwargs)
          self.recognized_tags[options.tag_name] = (render_func, options)
docs: Installs a render function for the specified tag name. The render function
          should have the following signature:
  
              def render(tag_name, value, options, parent, context)
  
          The arguments are as follows:
  
              tag_name
                  The name of the tag being rendered.
              value
                  The context between start and end tags, or None for standalone tags.
                  Whether this has been rendered depends on render_embedded tag option.
              options
                  A dictionary of options specified on the opening tag.
              parent
                  The parent TagOptions, if the tag is being rendered inside another tag,
                  otherwise None.
              context
                  The keyword argument dictionary passed into the format call.