private void ParseDiffs(string oldScript, string newScript) { StringBuilder textBuilder = new StringBuilder(); List <DiffItem> diffItems = Diff.DiffTexts(oldScript, newScript); foreach (DiffItem diffItem in diffItems) { switch (diffItem.type) { case DiffItem.DiffType.Deleted: case DiffItem.DiffType.Inserted: DiffSegment segment = new DiffSegment() { StartOffset = textBuilder.Length, Length = diffItem.data.Length, type = diffItem.type }; diffHighlighter.AddSegment(segment); break; } textBuilder.AppendLine(diffItem.data); } try { string newline = Environment.NewLine; textBuilder.Remove(textBuilder.Length - newline.Length, newline.Length); } catch (ArgumentOutOfRangeException) {} // pass scriptView.Text = textBuilder.ToString(); }
public ShowDiffWindow(string oldScript, string newScript) { InitializeComponent(); List <DiffItem> diffItems = Diff.DiffTexts(oldScript, newScript); for (int i = 0; i < diffItems.Count; i++) { DiffItem diffItem = diffItems[i]; BrushConverter bc = new BrushConverter(); TextRange tr = new TextRange(scriptText.Document.ContentEnd, scriptText.Document.ContentEnd) { Text = diffItem.data + Environment.NewLine }; if (diffItem.type == "Deleted") { tr.ApplyPropertyValue(TextElement.BackgroundProperty, "#FFF8FF"); } else if (diffItem.type == "Inserted") { tr.ApplyPropertyValue(TextElement.BackgroundProperty, "#F8FFF8"); } } }