docs: def do_replace(eval_ctx, s, old, new, count=None):
      """Return a copy of the value with all occurrences of a substring
      replaced with a new one. The first argument is the substring
      that should be replaced, the second is the replacement string.
      If the optional third argument ``count`` is given, only the first
      ``count`` occurrences are replaced:
  
      .. sourcecode:: jinja
  
          {{ "Hello World"|replace("Hello", "Goodbye") }}
              -> Goodbye World
  
          {{ "aaaaargh"|replace("a", "d'oh, ", 2) }}
              -> d'oh, d'oh, aaargh
      """
      if count is None:
          count = -1
      if not eval_ctx.autoescape:
          return unicode(s).replace(unicode(old), unicode(new), count)
      if hasattr(old, '__html__') or hasattr(new, '__html__') and \
         not hasattr(s, '__html__'):
          s = escape(s)
      else:
          s = soft_unicode(s)
      return s.replace(soft_unicode(old), soft_unicode(new), count)