diff -r 69f0df325057 -r 20c86b638551 Diff.st --- a/Diff.st Mon May 15 14:50:45 2017 +0200 +++ b/Diff.st Tue May 16 14:19:31 2017 +0200 @@ -1,5 +1,3 @@ -"{ Encoding: utf8 }" - " Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague Copyright (c) 2009-2010 eXept Software AG @@ -99,7 +97,7 @@ documentation " I'm standard diff implementation written purely in Smalltalk. I can - compute differences between two sequenceable collections, not neccesaarily + compute differences between two sequenceable collections, not necessarily holding strings. Elements are compared using #=. Result of comparison is an edit script, a linked list of Diff::Changes, @@ -124,23 +122,23 @@ documentation_czech " -první fáze: +první fáze: ############################################################################################################################# first := #('prvni' 'druhy' 'treti' 'treti' 'paty' 'zeleny' 'ruzovy' ). second := #('prvni' 'treti' 'zeleny' 'ruzovy' 'treti' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ). ############################################################################################################################ -First a second pøedstavujou dvì pole, které chceme porovnávat. Jednotlivé položky v poli si lze pøedstavit jako øádky, pøípadnì jako slova v øádku. -Podle toho, co je potøeba porovnávat. +First a second pøedstavujou dvì pole, které chceme porovnávat. Jednotlivé položky v poli si lze pøedstavit jako øádky, pøípadnì jako slova v øádku. +Podle toho, co je potøeba porovnávat. ***************************************************************************************************************************** diff := FelDiff new felDiff. ***************************************************************************************************************************** -Zde probíhá inicializace defaultníh promìnných. Funguje to jako konstruktor. +Zde probíhá inicializace defaultníh promìnných. Funguje to jako konstruktor. ############################################################################################################################ diff diff: first b: second ############################################################################################################################ -První fáze nutná pro porovnávání polí. Vzniknou dvì instance tøíde filedata uložené do pole. Tyto instance budou obsahovat následující údaje: +První fáze nutná pro porovnávání polí. Vzniknou dvì instance tøíde filedata uložené do pole. Tyto instance budou obsahovat následující údaje: filevec[1].equivs=#(1 2 3 3 4 5 6) filevec[1].bufferedLines=7 @@ -150,17 +148,17 @@ filevec[2].bufferedLines=16 filevec[2].changedFlag=#() -V zásadì se vytvoøila structura Dictionary, která jednotlivé øádky(slova) pøevedla na èísla. Pole equvs pak pøedstavuje èíselnì slova(øádky). -èísla, která se nalézají v obou dbou polí equivs znaèí, že soubory sdílí alespoò nìjaké slovo(øádek). +V zásadì se vytvoøila structura Dictionary, která jednotlivé øádky(slova) pøevedla na èísla. Pole equvs pak pøedstavuje èíselnì slova(øádky). +èísla, která se nalézají v obou dbou polí equivs znaèí, že soubory sdílí alespoò nìjaké slovo(øádek). ***************************************************************************************************************************** change:= diff diff2: true. ***************************************************************************************************************************** -Zde již dochází k porovnání obou dvou polí s øádky(slovy). Lze si vybrat mezi forwardscriptem a reversescriptem. +Zde již dochází k porovnání obou dvou polí s øádky(slovy). Lze si vybrat mezi forwardscriptem a reversescriptem. 1) metoda discardconfusinglines -výsledek: +výsledek: filevec[1].undiscardeded=#(1 3 3 5 6 0 0) filevec[1].realIndexes= #(0 2 3 5 6 0 0) filevec[1].nondiscardedLines=5 @@ -170,15 +168,15 @@ filevec[2].realIndexes= #(0 1 2 3 4 0 0 0 0 0 0 0 0 0 0 0) filevec[2].nondiscardedLines=5 -Undiscarded- Øádky soubory, které jsou shodné. -RealIndexes - indexy øádkù v poli(je potøeba pøièíst jedna) - - to znamená že index prvního 3->3 pozice v prvním vstupním poli - - index druhého 3->2 pozice v druhém vstupním poli a 3->5 pozice v druhém vstupním poli -NondiscardedLines- znaèí kolik èádkù(slov) je shodných v obou polích. +Undiscarded- Øádky soubory, které jsou shodné. +RealIndexes - indexy øádkù v poli(je potøeba pøièíst jedna) + - to znamená že index prvního 3->3 pozice v prvním vstupním poli + - index druhého 3->2 pozice v druhém vstupním poli a 3->5 pozice v druhém vstupním poli +NondiscardedLines- znaèí kolik èádkù(slov) je shodných v obou polích. -2)Následuje porovnávání jednotlivých polí a vytvoøení výsledku +2)Následuje porovnávání jednotlivých polí a vytvoøení výsledku -3)Výsledek Reverse skript +3)Výsledek Reverse skript inserted=12('treti' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa') deleted=0 @@ -186,43 +184,43 @@ line1=4('ruzovy') link=next -inserted- kolik znakù bylo vloženo -deleted - kolik znakù bylo smazáno -line0 - poøadí znaku za kterým bylo nìco vloženo(smazáno) v prvním poli(poslední znak který je shodný v obou polích) -line1 - poøadí znaku za kterým bylo nìco smazáno(vloženo) v prvním poli(poslední znak který je shodný v obou polích) +inserted- kolik znakù bylo vloženo +deleted - kolik znakù bylo smazáno +line0 - poøadí znaku za kterým bylo nìco vloženo(smazáno) v prvním poli(poslední znak který je shodný v obou polích) +line1 - poøadí znaku za kterým bylo nìco smazáno(vloženo) v prvním poli(poslední znak který je shodný v obou polích) -Takže po znaku na pozici 4, je 12 vložených znakù oproti prvnímu +Takže po znaku na pozici 4, je 12 vložených znakù oproti prvnímu -Zbytek pole vypadá takto: +Zbytek pole vypadá takto: first := #('prvni' 'druhy' 'treti' 'treti' 'paty' 'zeleny' 'ruzovy' ). second := #('prvni' 'treti' 'zeleny' 'ruzovy'). -link není null a tudíž odkazuje na další informace o zmìnách. +link není null a tudíž odkazuje na další informace o zmìnách. inserted=0 deleted=2('treti' 'paty') line0=3('treti') line1=2('treti') link=next -zbytek pole vypadá takto: +zbytek pole vypadá takto: first := #('prvni' 'druhy' 'treti' 'zeleny' 'ruzovy' ). second := #('prvni' 'treti' 'zeleny' 'ruzovy'). -link není null a tudíž odkazuje na další informace o zmìnách. +link není null a tudíž odkazuje na další informace o zmìnách. inserted=0 deleted=1('druhy') line0=1('prvni') line1=1('prvni') link=nil -zbytek pole vypadá takto: +zbytek pole vypadá takto: first := #('prvni' 'treti' 'zeleny' 'ruzovy' ). second := #('prvni' 'treti' 'zeleny' 'ruzovy'). -link je nil. Neexistuje žádná zmìna a tato pole jsou shodná. +link je nil. Neexistuje žádná zmìna a tato pole jsou shodná. -4)Výsledek Forward skript +4)Výsledek Forward skript inserted=0 deleted=1('druhy') @@ -230,22 +228,22 @@ line1=1('prvni') link=next -zbytek pole vypadá takto: +zbytek pole vypadá takto: first := #('prvni' 'treti' 'treti' 'paty' 'zeleny' 'ruzovy' ). second := #('prvni' 'treti' 'zeleny' 'ruzovy' 'treti' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ). -link není nil jdeme na odkaz: +link není nil jdeme na odkaz: inserted=0 deleted=2('treti' 'paty') line0=3('treti') line1=2('treti') link=next -zbytek pole vypadá takto: +zbytek pole vypadá takto: first := #('prvni' 'treti' 'zeleny' 'ruzovy' ). second := #('prvni' 'treti' 'zeleny' 'ruzovy' 'treti' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa' ). -link není nil jdeme na odkaz: +link není nil jdeme na odkaz: inserted=12('treti' 'bbb' 'ccc' 'aaa' 'aaa' 'hhh' 'iii' 'mmm' 'nnn' 'ppp' 'aaa' 'aaa') deleted=0 @@ -253,7 +251,7 @@ line1=4('ruzovy') link=nil -zbytek pole vypadá takto: +zbytek pole vypadá takto: first := #('prvni' 'treti' 'zeleny' 'ruzovy' ). second := #('prvni' 'treti' 'zeleny' 'ruzovy').