private Collection<MultiLineDiff> GetTraces(string[] originalStrs, string[] newStrs, int[][] buffer) { Collection<MultiLineDiff> trances = new Collection<MultiLineDiff>(); int y = 0; int x = 0; while (y < buffer.Length - 1 && x < buffer[0].Length - 1) { MultiLineDiff diffItem = new MultiLineDiff(); diffItem.NewLine = x; diffItem.OriginalLine = y; int currentValue = buffer[y][x]; int addLength = buffer[y][x + 1]; int deleteLength = buffer[y + 1][x]; int updateLength = buffer[y + 1][x + 1]; if (currentValue == addLength + 1) { diffItem.ChangeType = 1; x++; } else if (currentValue == deleteLength + 1) { diffItem.ChangeType = -1; y++; } else { if (originalStrs[y] == newStrs[x]) { diffItem.ChangeType = 0; } else { diffItem.ChangeType = 2; } x = x + 1; y = y + 1; } trances.Add(diffItem); } if (y == buffer.Length - 1) { //Add while (x < newStrs.Length) { MultiLineDiff diffItem = new MultiLineDiff(); diffItem.NewLine = x; diffItem.OriginalLine = -1; diffItem.ChangeType = 1; trances.Add(diffItem); x++; } } else if (x == buffer[0].Length - 1) { //delete while (y < originalStrs.Length) { MultiLineDiff diffItem = new MultiLineDiff(); diffItem.NewLine = -1; diffItem.OriginalLine = y; diffItem.ChangeType = -1; trances.Add(diffItem); y++; } } return trances; }
private Collection <MultiLineDiff> GetTraces(string[] originalStrs, string[] newStrs, int[][] buffer) { Collection <MultiLineDiff> trances = new Collection <MultiLineDiff>(); int y = 0; int x = 0; while (y < buffer.Length - 1 && x < buffer[0].Length - 1) { MultiLineDiff diffItem = new MultiLineDiff(); diffItem.NewLine = x; diffItem.OriginalLine = y; int currentValue = buffer[y][x]; int addLength = buffer[y][x + 1]; int deleteLength = buffer[y + 1][x]; int updateLength = buffer[y + 1][x + 1]; if (currentValue == addLength + 1) { diffItem.ChangeType = 1; x++; } else if (currentValue == deleteLength + 1) { diffItem.ChangeType = -1; y++; } else { if (originalStrs[y] == newStrs[x]) { diffItem.ChangeType = 0; } else { diffItem.ChangeType = 2; } x = x + 1; y = y + 1; } trances.Add(diffItem); } if (y == buffer.Length - 1) { //Add while (x < newStrs.Length) { MultiLineDiff diffItem = new MultiLineDiff(); diffItem.NewLine = x; diffItem.OriginalLine = -1; diffItem.ChangeType = 1; trances.Add(diffItem); x++; } } else if (x == buffer[0].Length - 1) { //delete while (y < originalStrs.Length) { MultiLineDiff diffItem = new MultiLineDiff(); diffItem.NewLine = -1; diffItem.OriginalLine = y; diffItem.ChangeType = -1; trances.Add(diffItem); y++; } } return(trances); }