Render Unified Diff с Python

У меня есть строка, которая содержит SVN Unified Diff. Моему приложению PyGTK нужно показывать этот diff пользователю, и я хочу отобразить его, как это делают другие инструменты diff, или, по крайней мере, его раскрасить.

У вас есть что предложить, внешний инструмент, библиотека, пользовательская реализация...? Я смотрел на http://kafka.fr.free.fr/diff2html/ но я предпочитаю использовать какую-то библиотеку или что-то подобное, поэтому пользователям не нужно устанавливать сторонние приложения.

Я хочу использовать это для мерзавцев и ртутных различий позже.

3 ответа

Решение

Вы можете использовать difflib для генерации различий и pygtkscintilla для подсветки синтаксиса, нумерации строк, свертывания кода и т. Д.

Если вы хотите только подсветку синтаксиса (в отличие от всех функций редактора, предлагаемых pygtkscintilla), то вы также можете посмотреть на фрагменты.

difflib.HtmlDiff класс предоставляет возможности для этого. Однако вместо того, чтобы начинать с унифицированного файла различий, HtmlDiff хочет, чтобы вы передали полные файлы "до" и "после". Эти файлы легко получить с помощью команд svn/git/mercurial без использования функции diff этих VCS.

GtkSourceView - это замена замены TextView pygtk, который может синтаксически выделять файлы различий, включая унифицированные разности.

Другие вопросы по тегам