Утилита diff на основе JavaScript

Я ищу эквивалент diff, написанный на JavaScript, который только возвращает/печатает соответствующие строки. Я не хочу, чтобы оба полных текста отображались рядом друг с другом с выделенными различиями, но просто хотите, чтобы фактические различия (плюс некоторые строки буфера, чтобы знать, где разница), аналогично выводу из утилиты linux diff.

Кто-нибудь знает функцию javascript, которая делает это? Все отличия должны быть распознаны (даже измененные пробелы). Спасибо.

Ответ 1

jsdifflib сравнение в режиме реального времени, попробуйте настроить размер контекста, чтобы отобразить только нужное окно изменения, которое вы хотите. Там демо здесь

Ответ 2

Я полностью перестроил утилиту jsdifflib для скорости. Поскольку моя версия не требует доступа DOM по крайней мере в 4,5 раза быстрее, а также расширяется, чтобы выделить различия символов в каждой строке.

http://prettydiff.com/diffview.js

Вы можете проверить это с помощью онлайн-инструмента прямо на http://prettydiff.com/

Ответ 3

Там также google-diff-match-patch из Google

Также доступен на NPM

npm install diff-match-patch

Ответ 4

Я не знаю много об утилите diff в linux или linux вообще, но это может быть то, что вы ищете jsdifflib, Вы можете найти живой пример там и посмотреть, работает ли он для вас.

Ответ 5

Отъезд CodeMirror. Сказал Нафф.

Ответ 7

Просмотрите wikEd diff библиотека JavaScript. Существует также онлайн-инструмент.

wikEd diff содержит встроенные текстовые сравнения с подсветкой блока и символьным/текстовым разрешением. Он оптимизирован для исходного текста в Википедии, но отлично подходит для любого типа текста или кода. Код библиотеки полностью настраивается, поддерживает Unicode, широко комментируется и находится в общественном достоянии.

Ответ 8

  • Mergely полностью стоит проверить. CodeMirror, только клиентская сторона.
  • Затем появится демо-версия CodeMirror, которая требует вычисления на стороне сервера.
  • jsdifflib и prettydiff, как указано в других ответах.

Ответ 9

jsdifflib выглядит многообещающим - попробуйте демонстрацию, связанную с этой страницей.

Ответ 10

старый вопрос, который я знаю, но если ваше выполнение node работает или хочет что-то, что совместимо с модулем requirejs/commonjs

Мне действительно понравилось https://www.npmjs.com/package/diff

console.log(diff.createPatch('some file name.txt', expected, actual));