使用Python渲染统一差异

时间:2011-12-24 18:36:02

标签: python svn diff pygtk unified-diff

我有一个包含svn统一差异的字符串。我的PyGTK应用程序需要向用户显示这个差异,我想像其他差异工具一样渲染​​它,或者至少让它变色。

你有什么建议,外部工具,库,自定义实现......?我喜欢http://kafka.fr.free.fr/diff2html/,但我更喜欢使用某些类似的库,所以用户不需要安装第三方应用程序。

我想稍后将它用于git和mercurial差异。

3 个答案:

答案 0 :(得分:4)

您可以使用difflib生成差异,使用pygtkscintilla进行语法突出显示,行编号,代码折叠等。

如果您只想要语法高亮(与pygtkscintilla提供的所有编辑器功能相对),那么您还可以查看pygments

答案 1 :(得分:0)

difflib.HtmlDiff类提供了执行此操作的工具。但是,HtmlDiff要求您传递完整的“之前”和“之后”文件,而不是从统一的差异文件开始。使用svn / git / mercurial命令很容易获得这些文件,而无需使用这些VCS的“diff”功能。

答案 2 :(得分:-1)

GtkSourceView是pygtk TextView的替代品,可以语法高亮显示差异文件,包括统一差异。