public static void WriteUnifiedDiff(Algorithm.Diff.Diff diff, TextWriter writer, string fromfile, string tofile, int context) { writer.Write("--- "); writer.WriteLine(fromfile); writer.Write("+++ "); writer.WriteLine(tofile); ArrayList hunks = new ArrayList(); foreach (Algorithm.Diff.Diff.Hunk hunk in diff) { Algorithm.Diff.Diff.Hunk hunk2 = null; if (hunks.Count > 0) { hunk2 = (Algorithm.Diff.Diff.Hunk)hunks[hunks.Count - 1]; } if (hunk.Same) { if (hunk2 == null) { if (hunk.Left.Count > context) { hunks.Add(hunk.Crop(hunk.Left.Count - context, 0)); } else { hunks.Add(hunk); } } else if (hunk.Left.Count <= (context * 2)) { hunks.Add(hunk); } else { hunks.Add(hunk.Crop(0, hunk.Left.Count - context)); WriteUnifiedDiffSection(writer, hunks); hunks.Clear(); if (hunk.Left.Count > context) { hunks.Add(hunk.Crop(hunk.Left.Count - context, 0)); } else { hunks.Add(hunk); } } continue; } hunks.Add(hunk); } if ((hunks.Count > 0) && ((hunks.Count != 1) || !((Algorithm.Diff.Diff.Hunk)hunks[0]).Same)) { WriteUnifiedDiffSection(writer, hunks); } }
public static void WriteUnifiedDiff(Algorithm.Diff.Diff diff, TextWriter writer) { WriteUnifiedDiff(diff, writer, "Left", "Right", 2); }
public Enumerator(Algorithm.Diff.Diff diff) { this.diff = diff; this.Reset(); }
public static void WriteUnifiedDiff(string[] leftLines, string leftName, string[] rightLines, string rightName, TextWriter writer, int context, bool caseSensitive, bool compareWhitespace) { Algorithm.Diff.Diff diff = new Algorithm.Diff.Diff(leftLines, rightLines, caseSensitive, compareWhitespace); WriteUnifiedDiff(diff, writer, leftName, rightName, context); }
private void Refresh() { box.Show(); try { if (left is string) diff = new Algorithm.Diff.Diff((string)left, (string)right, false, true); else if (left is string[]) diff = new Algorithm.Diff.Diff((string[])left, (string[])right, null, null); } catch (Exception e) { Console.Error.WriteLine(e.ToString()); return; } if (widget != null) { pos = widget.Position; box.Remove(widget); widget.Dispose(); } DiffWidget.Options opts = new DiffWidget.Options(); opts.Font = MonoDevelop.EditorBindings.Properties.TextEditorProperties.Font.ToString(); opts.LeftName = "Repository"; opts.RightName = "Working Copy"; widget = new DiffWidget(diff, opts); box.Add(widget); box.ShowAll(); widget.ExposeEvent += new ExposeEventHandler(OnExposed); }