Об этом проекте

jsdiff — это библиотека JavaScript для сравнения текста, основанная на алгоритме различий Майерса O(ND). Она предоставляет комплексный API для сравнения текста на нескольких уровнях детализации: - **Сравнение на уровне символов** (`diffChars`): Обрабатывает каждую кодовую точку Unicode как токен, с опциональным регистронезависимым сравнением. - **Сравнение на уровне слов** (`diffWords`, `diffWordsWithSpace`): Обрабатывает слова и пунктуацию как токены, с опциональной поддержкой `Intl.Segmenter` для лучшей сегментации неанглийских слов. - **Сравнение на уровне строк** (`diffLines`): Обрабатывает каждую строку как токен, с опциями для игнорирования пробелов, обработки завершающих символов CR и обработки новых строк как отдельных токенов. - **Сравнение на уровне предложений** (`diffSentences`): Обрабатывает предложения и межпредложенческие пробелы как токены. - **Сравнение CSS** (`diffCss`): Сравнивает CSS-токены. - **Сравнение JSON** (`diffJson`): Сериализует объекты в форматированный JSON и сравнивает построчно, с упорядочиванием свойств по алфавиту. - **Сравнение массивов** (`diffArrays`): Сравнивает массивы токенов со строгим равенством или пользовательским компаратором. Библиотека также предоставляет возможности управления патчами: - **Создание патчей**: `createPatch` и `createTwoFilesPatch` генерируют патчи в формате unified diff с настраиваемыми строками контекста и параметрами заголовков. - **Структурированные патчи**: `structuredPatch` возвращает структуру данных с объектами хунков, подходящими для программной обработки. - **Применение патчей**: `applyPatch` и `applyPatches` применяют unified diff патчи с поддержкой коэффициента нечеткости, автоматическим преобразованием концов строк и пользовательскими обратными вызовами для сравнения строк. - **Разбор патчей**: `parsePatch` разбирает формат unified diff (включая расширенные заголовки Git для переименований, копий, созданий, удалений и бинарных файлов) в структурированные объекты. - **Обращение патчей**: `reversePatch` генерирует обратный патч. - **Преобразование форматов**: `convertChangesToXML` и `convertChangesToDMP` преобразуют объекты изменений в XML или формат Google diff-match-patch. Универсальные опции включают асинхронный режим обратного вызова, ограничения максимальной длины правок, поддержку тайм-аута и детализацию объектов изменений на токен. Библиотека также поддерживает пользовательское поведение сравнения через класс `Diff`, позволяя пользователям переопределять приведение входных данных, токенизацию, удаление пустых токенов, проверку равенства и функции объединения. Библиотека доступна через npm (`npm install diff`) и поддерживает импорт как ESM, так и CommonJS, а также прямое использование в браузере через `dist/diff.js`.