Tp.SourceControl.Diff.DiffProcessor.GetDiff C# (CSharp) Method

GetDiff() public method

public GetDiff ( string baseSources, string diffSource ) : DiffResult
baseSources string
diffSource string
return DiffResult
		public DiffResult GetDiff(string baseSources, string diffSource)
		{
			var result = new DiffResult();
			var diff = Diff.DiffText(baseSources, diffSource, true, true, false);
			baseSources = baseSources.Replace("\r", "");
			diffSource = diffSource.Replace("\r", "");
			var aLines = baseSources.Split('\n');
			var bLines = diffSource.Split('\n');

			var n = 0;
			var leftLineNumber = 0;
			var rightLineNumber = 0;

			for (var diffItem = 0; diffItem < diff.Length; diffItem++)
			{
				var aItem = diff[diffItem];

				// write unchanged lines
				while ((n < aItem.StartB) && (n < bLines.Length))
				{
					result.LeftPan.Add(new DiffLineData(bLines[n], DiffActionType.None, leftLineNumber));
					result.RightPan.Add(new DiffLineData(bLines[n], DiffActionType.None, rightLineNumber));
					n++;
					leftLineNumber++;
					rightLineNumber++;
				} // while


				for (var m = 0; m < aItem.deletedA; m++)
				{
					result.LeftPan.Add(new DiffLineData(aLines[aItem.StartA + m], DiffActionType.Deleted, leftLineNumber));
					result.RightPan.Add(new DiffLineData("", DiffActionType.None, -1));
					leftLineNumber++;
				} // for

				// write inserted lines
				while (n < aItem.StartB + aItem.insertedB)
				{
					result.RightPan.Add(new DiffLineData(bLines[n], DiffActionType.Added, rightLineNumber));
					result.LeftPan.Add(new DiffLineData("", DiffActionType.None, -1));
					n++;
					rightLineNumber++;
				}
			}

			// write rest of unchanged lines
			while (n < bLines.Length)
			{
				result.LeftPan.Add(new DiffLineData(bLines[n], DiffActionType.None, leftLineNumber));
				result.RightPan.Add(new DiffLineData(bLines[n], DiffActionType.None, rightLineNumber));
				leftLineNumber++;
				rightLineNumber++;
				n++;
			}

			PostProcessPans(result);

			return result;
		}

Usage Example

		public void TestStringIsNotUpdated()
		{
			var processor = new DiffProcessor();
			var source = "123";
			var diff = "123";

			var result = processor.GetDiff(source, diff);

			var leftFirstString = result.LeftPan[0];
			leftFirstString.Action.Should(Be.EqualTo(DiffActionType.None), "leftFirstString.Action.Should(Be.EqualTo(DiffActionType.None))");
			leftFirstString.Line.Should(Be.EqualTo(source), "leftFirstString.Line.Should(Be.EqualTo(source))");
			leftFirstString.LineNumber.Should(Be.EqualTo(0), "leftFirstString.LineNumber.Should(Be.EqualTo(0))");

			var rightFirstString = result.RightPan[0];
			rightFirstString.Action.Should(Be.EqualTo(DiffActionType.None), "rightFirstString.Action.Should(Be.EqualTo(DiffActionType.None))");
			rightFirstString.Line.Should(Be.EqualTo(diff), "rightFirstString.Line.Should(Be.EqualTo(diff))");
			rightFirstString.LineNumber.Should(Be.EqualTo(0), "rightFirstString.LineNumber.Should(Be.EqualTo(0))");
		}
All Usage Examples Of Tp.SourceControl.Diff.DiffProcessor::GetDiff