Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }
Example #4
0
 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);
 }
Example #5
0
 private void Host_Rendered(object sender, DiffStats e)
 {
     ApplicationView.GetForCurrentView().Title = "{props:" + e.PropertySetCount + ", objs:" + e.ObjectCreateCount + ", elapsed:" + e.ElapsedMilliseconds.ToString("#") + "ms }";
 }