#java #diff
#java #разница
Вопрос:
Я использую google-diff-match-patch в своем Java-приложении для создания различий. Я использую метод diff_prettyHtml для генерации HTML-вывода diff.
Однако я хотел бы иметь два разных вывода, чтобы я мог разместить их рядом, чтобы пользователю было немного легче видеть различия. (Например, как это делает Eclipse.)
Есть ли что-нибудь в этой библиотеке, что я могу использовать для достижения этого? Как бы вы это сделали? (Я бы не стал использовать другую библиотеку, если это возможно.)
Ответ №1:
Предполагая, что вы не пытаетесь дифференцировать HTML, и в этом случае я бы предложил использовать DaisyDiff, то, что вы, вероятно, захотите сделать с помощью diff-match-patch, — это разделение строк, которое описано на вики-странице проекта. В основном это включает в себя генерацию массива хэш-кодов, по одному для каждой строки слева и справа, и отслеживание этих хэш-кодов относительно строк на карте, а затем запуск этих массивов с помощью алгоритма diffing. Затем вы используете вывод diff в сочетании с картой для регидратации выделения слева и справа по мере необходимости.
Комментарии:
1. Кстати, я написал библиотеку-оболочку, чтобы помочь с «презентационной работой», необходимой для использования
diff_match_patch
: github.com/arnab/jQuery . PrettyTextDiff
Ответ №2:
Я попытался реализовать другой подход в Python:
http://code.activestate.com/recipes/577784-line-based-side-by-side-diff/
Неудачные тестовые примеры приветствуются.