Klasa Diff

0

Nie jestem pewien, czy ta klasa dziala dobrze. Dominium, spojrz tutaj:

http://dev.4programmers.net/adm/Wiki/History/Foo

i porownaj te dwie wersje - wyswietla sie wynik jej dzialania. Jest ok?
Mysle, ze lepiej, aby klasa zwracala po prostu tablice asocjacyjna z informacjami o usunietych, dodanych i zmienionych liniach. Np. zeby byly metody:

getAdded(), getRemoved(), getChanged()

Co Wy na to?
Aby kluczem tablicy byla linia, a wartoscia zawartosc danej linii. W ten sposob, w widoku mozna by bylo ustalic jak maja sie prezentowac wyniki. Do rozpatrzenia.

Ewentualnie (to by bylo fajnie), gdyby metoda getChanged() zwracala linie w ktorych nastapila zmiana np. w tej formie:

<numer linii="linii"> => To jest tekst <ins>ktory</ins> ktorym ...

Znacznik <ins> oznacza wartosc wstawiona w tej linijce, a - usunieta. Wowzcas mozna by bylo w CSS ustalic jak ma sie wyswietlac ten znacznik.

P.S. Jestes pewien, ze array_merge_recursive() nie moze zastapic metody o tej nazwie z klasy diff ?

0

Adamie w tej klasie jest

	private $array_equal = NULL;
	/* Tablica zawiera elementy usuniete */
	private $array_deleted = NULL;
	/* Tablica zawiera elementy ddane */
	private $array_added = NULL;

Gdzie znajdują się informacje o zmianach etc. Już gdzieś pisałem, że nie wiem co miało by zwracać, więc testowałem to na plikach starego coyota z cvs.

co do array_merge_recursive() funkcja ta laczy tablice tracac informacje o pozycji..

Przykład:

$tab1 = array ("1" => "jeden", "6" => "szesc");
$tab2 = array ("3" => "trzy", "2" => "dwa");

Zwróci : array("jeden", "szesc", "trzy", "dwa"):

a ta nowa funkcja zwroci array("jeden", "dwa", "trzy", "szesc");

Głównie chodziło o łączenie linii usuniętych z dodanymi nie tracąc informacji o ich położeniu w tekście.

0

Ok, rozumiem. Mozna testowac juz Twoja klase.
Poki co nie idzie cos nieraz, np. tutaj: http://dev.4programmers.net/adm/Wiki/History/test Zalezy ktora wersje wybierzesz - nieraz jest zle, nieraz wyskakuja ostrzezenia PHP o nieprawidlowych tablicach, hm... :/

0

Hmm, faktycznie coś jest nie tak. Dziś posiedzę trochę dłużej w nocy może znajdę błąd. Co prawda w testach wywalało błędy, ale tylko gdy jeden plik pobrany był np. za pomocą file("plik");
a drugi array("jedna linia", "druga" ...);

Najwidoczniej coś zostało prze zemnie źle skrobnięte.

1 użytkowników online, w tym zalogowanych: 0, gości: 1