class RSpec::Support::Differ

def diff_as_string(actual, expected)

rubocop:disable Metrics/MethodLength
def diff_as_string(actual, expected)
  encoding = EncodedString.pick_encoding(actual, expected)
  actual   = EncodedString.new(actual, encoding)
  expected = EncodedString.new(expected, encoding)
  output = EncodedString.new("\n", encoding)
  hunks = build_hunks(actual, expected)
  hunks.each_cons(2) do |prev_hunk, current_hunk|
    begin
      if current_hunk.overlaps?(prev_hunk)
        add_old_hunk_to_hunk(current_hunk, prev_hunk)
      else
        add_to_output(output, prev_hunk.diff(format_type).to_s)
      end
    ensure
      add_to_output(output, "\n")
    end
  end
  finalize_output(output, hunks.last.diff(format_type).to_s) if hunks.last
  color_diff output
rescue Encoding::CompatibilityError
  handle_encoding_errors(actual, expected)
end