Об этом проекте
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`.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.