Beispiel #1
0
        /// <summary>Na základě algoritmu "An-O(ND)-Difference-Algorithm" od E. W. MYERSe porovná dva textové soubory</summary>
        /// <param name="c">Nejdelší společná subsekvence</param>
        /// <param name="x">Původní textový soubor</param>
        /// <param name="y">Nový textový soubor</param>
        /// <param name="i"></param>
        /// <param name="j"></param>
        /// <returns>Sada změn pro vytvoření nového souboru z původního</returns>
        private static DiffFile diff(int[][] c, File x, File y, int i, int j)
        {
            DiffFile d = new DiffFile();

            if ((i > 0) && (j > 0) && (x.Content[i - 1].Equals(y.Content[j - 1])))
            {
                d.add(diff(c, x, y, i - 1, j - 1));
                d.add(new DiffLine(i, KEEP_SYMBOL, x.Content[i - 1]));
            }
            else
            {
                if ((j > 0) && ((i == 0) || c[i][j - 1] >= c[i - 1][j]))
                {
                    d.add(diff(c, x, y, i, j - 1));
                    d.add(new DiffLine(j, ADD_SYMBOL, y.Content[j - 1]));
                }
                else if ((i > 0) && ((j == 0) || c[i][j - 1] < c[i - 1][j]))
                {
                    d.add(diff(c, x, y, i - 1, j));
                    d.add(new DiffLine(i, DEL_SYMBOL, x.Content[i - 1]));
                }
            }
            return d;
        }
Beispiel #2
0
 /// <summary>Připojí jeden virtuální soubor na konec druhého</summary>
 /// <param name="file">Přidávaný soubor</param>
 public void add(DiffFile file)
 {
     foreach(DiffLine line in file.Content)
         content.Add(line);
 }