def apply_diff(a, diff):
    """Применяет дифф, подсчитанный функциями ``get_diff``, к старому тексту
    для получения нового.

    :param str a: старый текст
    :param list diff: дифф для получения нового текста из старого
    :return: новый текст
    :rtype: str
    """
    i = 0
    result = []
    for op, data in diff:
        if op == '=':
            result.append(a[i:i + data])
            i += data
        elif op == '+':
            result.append(data)
        elif op == '-':
            assert a[i:i + len(data)] == data
            i += len(data)
    return ''.join(result)
