Algoritmus zobrazenia rozdielov pre frontend diffu

Sekcia: Programovanie 01.03.2007 | 16:18
Avatar nahnevaný mladý muž gNewSense  Používateľ
Pracujem na takom grafickom frontende pre diff. Malo by to fungovat ako WinMerge. Ale, mam problem s algoritmom ktory zvyrazni rozdiely.

Prvy subor:
Prvy riadok
Druhy
Treti

Toto je subor1.txt
Predchadzajuci riadok bol prazdny

Ovocie:
Jablko
Hruska
Slivka
Malina
Cucoriedka

Zelenina
Kapusta
Kel

Auta
Ferari
Laborghini
Skoda
Lada
Maserati

Koniec

Druhy subor:
Prvy riadok
Druhy
Treti

Toto je subor2.txt
Predchadzajuci riadok bol prazdny

Ovocie:
Jablko
Hruska

Zelenina
Kapusta
Kel
Kalerab

Auta
Ferari
Laborghini
Audi
BMW

Koniec

Rozdiel (diff subor1 subor2 > subor12.diff):
5c5
< Toto je subor1.txt
---
> Toto je subor2.txt
11,13d10
< Slivka
< Malina
< Cucoriedka
17a15
> Kalerab
22,24c20,21
< Skoda
< Lada
< Maserati
---
> Audi
> BMW

Takto to ma vyzerat: obrazok
Pointa je v tom pomocou udajov z diffu popridavat prazdne riadky do suboru1 a suboru2 na to prave miesto + uchovat info o tom co bolo kde zmenene. Pozor, pridanie riadku zmeni vsetky hodnoty za miestom vlozenia riadku. Je to na moj vkus trochu brutalny algoritmus, vysledok by ale mohol vyzerat nejak takto:
obrazok
Idealne by bolo keby program bol v C a spustal sa (ako filter) takto:

$ diffshow -1 subor1 subor12.diff > subor1.new
$ diffshow -2 subor2 subor12.diff > subor2.new

Takyto vystup by uz potom bolo velmi jednoduche zobrazit. Neskusite to niekto?