code: def _transform(self, data, escape_html, replace_links, replace_cosmetic, transform_newlines, **context):
          
          url_matches = {}
          if self.replace_links and replace_links:
              # If we're replacing links in the text (i.e. not those in [url] tags) then we need to be
              # careful to pull them out before doing any escaping or cosmetic replacement.
              pos = 0
              while True:
                  match = _url_re.search(data, pos)
                  if not match:
                      break
                  # Replace any link with a token that we can substitute back in after replacements.
                  token = '{{ bbcode-link-%s }}' % len(url_matches)
                  url_matches[token] = self._link_replace(match, **context)
                  start, end = match.span()
                  data = data[:start] + token + data[end:]
                  # To be perfectly accurate, this should probably be len(data[:start] + token), but
                  # start will work, because the token itself won't match as a URL.
                  pos = start
          if escape_html:
              data = self._replace(data, self.REPLACE_ESCAPE)
          if replace_cosmetic:
              data = self._replace(data, self.REPLACE_COSMETIC)
          # Now put the replaced links back in the text.
          for token, replacement in url_matches.items():
              data = data.replace(token, replacement)
          if transform_newlines:
              data = data.replace('\n', '\r')
          return data
docs: Transforms the input string based on the options specified, taking into account
          whether the option is enabled globally for this parser.