code: def _parse_external_link(self, brackets):
          
          if self._context & contexts.NO_EXT_LINKS or not self._can_recurse():
              if not brackets and self._context & contexts.DL_TERM:
                  self._handle_dl_term()
              else:
                  self._emit_text(self._read())
              return
  
          reset = self._head
          self._head += 1
          try:
              link, extra, delta = self._really_parse_external_link(brackets)
          except BadRoute:
              self._head = reset
              if not brackets and self._context & contexts.DL_TERM:
                  self._handle_dl_term()
              else:
                  self._emit_text(self._read())
          else:
              if not brackets:
                  scheme = link[0].text.split(":", 1)[0]
                  self._remove_uri_scheme_from_textbuffer(scheme)
              self._emit(tokens.ExternalLinkOpen(brackets=brackets))
              self._emit_all(link)
              self._emit(tokens.ExternalLinkClose())
              self._head += delta
              if extra:
                  self._emit_text(extra)
docs: Parse an external link at the head of the wikicode string.