Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
 public static void WriteUnifiedDiff(Algorithm.Diff.Diff diff, TextWriter writer)
 {
     WriteUnifiedDiff(diff, writer, "Left", "Right", 2);
 }
Esempio n. 3
0
 public Enumerator(Algorithm.Diff.Diff diff)
 {
     this.diff = diff;
     this.Reset();
 }
Esempio n. 4
0
 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);
 }
Esempio n. 5
0
        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);
        }