[Python-de] difflib HTML-output auf Wort-basis?

Stefan Behnel python-de at behnel.de
Mi Mai 1 06:30:00 CEST 2013


Reimar Bauer, 30.04.2013 22:02:
> 2013/4/30 Andi Albrecht
>> Am Dienstag, 30. April 2013 schrieb Stefan Schwarzer :
>>> On 2013-04-30 12:27, Hartmut Goebel wrote:
>>>> ich möchte Texte vergleichen und dabei die Änderungen möglichst auf
>>>> Basis von Wörtern angezeigt bekommen. Der Output soll dabei side-by-side
>>>> sein, so wie difflib.HtmlDiff es erzeugt. Leider ist difflib.HtmlDiff zu
>>>> grob, es markiert schnell große Bereiche als geändert, auch wenn sich
>>>> darin nur in mehreren Zeilen ein paar Wörter geändert haben.
>>>>
>>>> Mein Ziel ist in etwas das, was emacs' ediff macht oder github (siehe
>>>> z.B. https://github.com/htgoebel/gitflow/commit/381443a)
>>>>
>>>> Hat jemand einen Tipp für mich?
>>>
>>> Trac [1] - in Python geschrieben - macht so etwas auch,
>>> siehe [2]. Möglicherweise kannst du sogar direkt Quelltext
>>> von Trac übernehmen.
>>>
>>> Ich hatte mir schon mal überlegt, wie man so etwas machen
>>> könnte und kam auf die Idee, für jedes Zeichen eine Zeile zu
>>> erzeugen und das Ergebnis zu "diffen". "Etwas knifflig"
>>> könnte die spätere Rück-Konvertierung in Zeilen sein. (Ich
>>> habe jetzt keine Ahnung, _wie_ knifflig tatsächlich. ;-) )
>>>
>>> [1] http://trac.edgewall.org
>>> [2]
>>> http://ftputil.sschwarzer.net/trac/changeset/26c02d135501ab93dbe3d8d9ad13fe2dbae5bfb1
>>
>> wir haben in Rietveld ein Modul, das ähnlichen Output erzeugt:
>> https://code.google.com/p/rietveld/source/browse/codereview/intra_region_diff.py
>>
>> Das hat ein paar Abhängigkeiten zur Applikation selbst, aber man müsste
>> auch einiges übernehmen können.
>
> Um das ganze zu komplettieren, hier ist der diff2html code von moin2
> 
> http://hg.moinmo.in/moin/2.0/file/979c2ee641ac/MoinMoin/util/diff_html.py

Klingt für mich jetzt erstmal so, als hätten sich einige Projekte da Arbeit
ersparen können, wenn sie zusammen gearbeitet hätten. Aber vielleicht ist
es dazu ja noch nicht zu spät.

Stefan



Mehr Informationen über die Mailingliste python-de