Ответ 1
Возможно, это поможет вам - jsdiff
Я ищу реализацию javascript diff-алгоритма или библиотеку, которая была протестирована и работает с произвольными текстовыми файлами utf8.
Все те, которые я нашел до сих пор (скажем, например, http://ejohn.org/projects/javascript-diff-algorithm/) терпят неудачу в случае с короткими
(Попробуйте использовать файл, содержащий строку '__proto__'
в моей библиотеке примеров.)
Возможно, это поможет вам - jsdiff
Существует реализация алгоритма diff, которую я написал с помощью javascript на следующей странице.
https://github.com/cubicdaiya/onp
Это выполняется с node.js. В Forthermore есть версия аддона С++ для node.js на следующей странице.
https://github.com/cubicdaiya/node-dtl
Вы можете установить это с помощью npm.
$npm install -g dtl
Я поклонник патча google diff match. Вы можете попробовать пример здесь.
Существует различная опция очистки для настройки уровня общности между diff. Мне не нравится опция семантической очистки, так как я считаю ее слишком агрессивной, но эффективная очистка со значением 10 хорошо работает для меня.
Существует также adiff, который является библиотекой diff/patch, написанной в Javascript.
Посмотрите на библиотеку JavaScript wikEd diff. Он поддерживает Unicode и многоязычную поддержку. Он также обнаруживает и выделяет перемещения блоков и основан на словах/символах. Вы также можете использовать онлайн-версию/демонстрацию для тестирования различных настроек и просмотра внутренних структур данных. Код библиотеки полностью прокомментирован.
Да, где-то внутри инструмент тестирования Mocha - см. TJ Holowaychuk сообщение в блоге об этом.