docs: def strip_code(self, normalize=True, collapse=True,
                     keep_template_params=False):
          """Return a rendered string without unprintable code such as templates.
  
          The way a node is stripped is handled by the
          :meth:`~.Node.__strip__` method of :class:`.Node` objects, which
          generally return a subset of their nodes or ``None``. For example,
          templates and tags are removed completely, links are stripped to just
          their display part, headings are stripped to just their title.
  
          If *normalize* is ``True``, various things may be done to strip code
          further, such as converting HTML entities like ``&Sigma;``, ``&#931;``,
          and ``&#x3a3;`` to ``Σ``. If *collapse* is ``True``, we will try to
          remove excess whitespace as well (three or more newlines are converted
          to two, for example). If *keep_template_params* is ``True``, then
          template parameters will be preserved in the output (normally, they are
          removed completely).
          """
          kwargs = {
              "normalize": normalize,
              "collapse": collapse,
              "keep_template_params": keep_template_params
          }
  
          nodes = []
          for node in self.nodes:
              stripped = node.__strip__(**kwargs)
              if stripped:
                  nodes.append(str(stripped))
  
          if collapse:
              stripped = "".join(nodes).strip("\n")
              while "\n\n\n" in stripped:
                  stripped = stripped.replace("\n\n\n", "\n\n")
              return stripped
          else:
              return "".join(nodes)