private DiffHunk ReadTextPatchHunk() { var headers = ReadDiffHunkHeader(); var nums = new int[headers.Length]; int lineCount = 0; for (int i = 0; i < headers.Length; ++i) { nums[i] = headers[i].StartLine; lineCount += headers[i].LineCount; } var lines = new List <DiffLine>(lineCount); var stats = new DiffStats(); while (!IsAtEndOfString) { var line = ReadDiffLine(nums); stats.Increment(line.State); lines.Add(line); if (CheckValue(HunkHeader) || CheckValue(FileHeader)) { break; } } return(new DiffHunk(headers, lines, stats, false)); }
private DiffFile ReadDiffFile() { string source, target; bool isCombined = ReadDiffFileHeader1(out source, out target); var header = ReadDiffFileHeader2(isCombined); ReadDiffFileHeader3(ref source, ref target); bool isBinary = false; var stats = new DiffStats(); var hunks = new List <DiffHunk>(); while (!IsAtEndOfString) { if (CheckValue(HunkHeader)) { var hunk = ReadTextPatchHunk(); stats.Add(hunk.Stats); hunks.Add(hunk); } else if (CheckValue(BinaryFilesHeader)) { var hunk = ReadBinaryFilesDifferHunk(); stats.Add(hunk.Stats); hunks.Add(hunk); isBinary = true; break; } else if (CheckValue(BinaryPatchHeader)) { while (!IsAtEndOfString && !CheckValue(FileHeader)) { var hunk = ReadBinaryPatchHunk(); stats.Add(hunk.Stats); hunks.Add(hunk); } isBinary = true; break; } else if (CheckValue(FileHeader)) { break; } else { SkipLine(); } } switch (header.Status) { case FileStatus.Renamed: source = header.RenameFrom; target = header.RenameTo; break; case FileStatus.Copied: source = header.CopyFrom; target = header.CopyTo; break; } return(new DiffFile( header.OldIndex, header.NewIndex, header.OldMode, header.NewMode, source, target, header.Status, hunks, isBinary, stats)); }
private DiffFile ReadDiffFile() { string source, target; bool isCombined = ReadDiffFileHeader1(out source, out target); var header = ReadDiffFileHeader2(isCombined); ReadDiffFileHeader3(ref source, ref target); bool isBinary = false; var stats = new DiffStats(); var hunks = new List<DiffHunk>(); while(!IsAtEndOfString) { if(CheckValue(HunkHeader)) { var hunk = ReadTextPatchHunk(); stats.Add(hunk.Stats); hunks.Add(hunk); } else if(CheckValue(BinaryFilesHeader)) { var hunk = ReadBinaryFilesDifferHunk(); stats.Add(hunk.Stats); hunks.Add(hunk); isBinary = true; break; } else if(CheckValue(BinaryPatchHeader)) { while(!IsAtEndOfString && !CheckValue(FileHeader)) { var hunk = ReadBinaryPatchHunk(); stats.Add(hunk.Stats); hunks.Add(hunk); } isBinary = true; break; } else if(CheckValue(FileHeader)) { break; } else { SkipLine(); } } switch(header.Status) { case FileStatus.Renamed: source = header.RenameFrom; target = header.RenameTo; break; case FileStatus.Copied: source = header.CopyFrom; target = header.CopyTo; break; } return new DiffFile( header.OldIndex, header.NewIndex, header.OldMode, header.NewMode, source, target, header.Status, hunks, isBinary, stats); }
private DiffHunk ReadTextPatchHunk() { var headers = ReadDiffHunkHeader(); var nums = new int[headers.Length]; int lineCount = 0; for(int i = 0; i < headers.Length; ++i) { nums[i] = headers[i].StartLine; lineCount += headers[i].LineCount; } var lines = new List<DiffLine>(lineCount); var stats = new DiffStats(); while(!IsAtEndOfString) { var line = ReadDiffLine(nums); stats.Increment(line.State); lines.Add(line); if(CheckValue(HunkHeader) || CheckValue(FileHeader)) { break; } } return new DiffHunk(headers, lines, stats, false); }
private void Host_Rendered(object sender, DiffStats e) { ApplicationView.GetForCurrentView().Title = "{props:" + e.PropertySetCount + ", objs:" + e.ObjectCreateCount + ", elapsed:" + e.ElapsedMilliseconds.ToString("#") + "ms }"; }