public static List<DiffResultSpan> CompareStrings(string source, string destination, DiffEngineLevel level) { var inst = new DiffEngine(); inst._level = level; var src = new DiffList_String(source); var dst = new DiffList_String(destination); inst.ProcessDiff(src, dst); return inst.DiffReport(); }
public void Process(string[] pages, string[,] replaces, WikiProcessor[] procs, WikiErrorCheck[] checks, bool preview, bool save, WikiMedia.ExportNotify notify) { Regex[] re = CalcRegex(replaces); foreach (string pageName in pages) { if (!String.IsNullOrEmpty(pageName)) { Page page = new Page(site, pageName); page.Load(); if (!String.IsNullOrEmpty(page.text)) { string text = page.text.Trim(); page.text = text; text = DoRegex(page.text, re, replaces); WikiDocument doc = new WikiDocument(pageName, text); foreach (WikiProcessor p in procs) { p.Process(doc); } foreach (WikiErrorCheck check in checks) { check.Process(doc, notify); } text = doc.ToString().Trim(); if (!text.Equals(page.text)) { notify("W\t" + pageName + "\tchanged \n"); if (preview) { char[] sep = { '\n' }; IDiffList oldText = new DiffList_String(page.text, sep); IDiffList newText = new DiffList_String(text, sep); double time = 0; DiffEngine de = new DiffEngine(); time = de.ProcessDiff(oldText, newText); ArrayList rep = de.DiffReport(); Results dlg = new Results(oldText, newText, rep, time); dlg.Size = new Size(1000, 700); dlg.ShowInTaskbar = false; dlg.StartPosition = FormStartPosition.Manual; dlg.ShowDialog(); dlg.Dispose(); } if (save) { try { page.text = text; page.Save(); } catch (Exception e) { notify("E\t" + pageName + "\t" + e.Message + "\n"); } } } else { notify("N\t" + pageName + "\t\n"); } } else { notify("I\t" + pageName + "\t\n"); } } } }
private void cmdCompare2_Click(object sender, RoutedEventArgs e) { txtResult.TextArea.TextView.LineTransformers.Clear(); var cp1 = new DiffList_String(textEditorA.Text); var cp2 = new DiffList_String(textEditorB.Text); var df = new DiffEngine(); df.ProcessDiff(cp1, cp2, DiffEngineLevel.SlowPerfect); var result = df.DiffReport(); var txt = ""; //diff_match_patch comparer=new diff_match_patch(); //var result = comparer.diff_main(textEditorA.Text, textEditorB.Text); txtResult.Document.Text = ""; foreach (var diff in result) { if (diff.Status == DiffResultSpanStatus.AddDestination) { var st = txt.Length; for (int i = diff.DestIndex; i < diff.DestIndex + diff.Length; i++) { txt += ((TextLine)cp2.GetByIndex(i)).Line + Environment.NewLine;; } var stp = txt.Length; txtResult.TextArea.TextView.LineTransformers.Add(new TextColorizer(st, stp, Brushes.Green)); } else if (diff.Status == DiffResultSpanStatus.DeleteSource) { var st = txt.Length; for (int i = diff.SourceIndex; i < diff.SourceIndex + diff.Length; i++) { txt += ((TextLine)cp1.GetByIndex(i)).Line + Environment.NewLine;; } var stp = txt.Length; txtResult.TextArea.TextView.LineTransformers.Add(new TextColorizer(st, stp, Brushes.Red)); } else if (diff.Status == DiffResultSpanStatus.Replace) { var st = txt.Length; for (int i = diff.DestIndex; i < diff.DestIndex + diff.Length; i++) { txt += ((TextLine)cp2.GetByIndex(i)).Line + Environment.NewLine; } var stp = txt.Length; txtResult.TextArea.TextView.LineTransformers.Add(new TextColorizer(st, stp, Brushes.Orange)); } else { for (int i = diff.SourceIndex; i < diff.Length; i++) { txt += ((TextLine)cp1.GetByIndex(i)).Line + Environment.NewLine;; } } } txtResult.Document.Text = txt; }
private void cmdCompare2_Click(object sender, RoutedEventArgs e) { txtResult.TextArea.TextView.LineTransformers.Clear(); var cp1 = new DiffList_String(textEditorA.Text); var cp2 = new DiffList_String(textEditorB.Text); var df = new DiffEngine(); df.ProcessDiff(cp1, cp2, DiffEngineLevel.SlowPerfect); var result = df.DiffReport(); var txt = ""; //diff_match_patch comparer=new diff_match_patch(); //var result = comparer.diff_main(textEditorA.Text, textEditorB.Text); txtResult.Document.Text = ""; foreach (var diff in result) { if (diff.Status == DiffResultSpanStatus.AddDestination) { var st = txt.Length; for (int i = diff.DestIndex; i < diff.DestIndex + diff.Length; i++) { txt += ((TextLine)cp2.GetByIndex(i)).Line + Environment.NewLine; ; } var stp = txt.Length; txtResult.TextArea.TextView.LineTransformers.Add(new TextColorizer(st, stp, Brushes.Green)); } else if (diff.Status == DiffResultSpanStatus.DeleteSource) { var st = txt.Length; for (int i = diff.SourceIndex; i < diff.SourceIndex + diff.Length; i++) { txt += ((TextLine)cp1.GetByIndex(i)).Line + Environment.NewLine; ; } var stp = txt.Length; txtResult.TextArea.TextView.LineTransformers.Add(new TextColorizer(st, stp, Brushes.Red)); } else if (diff.Status == DiffResultSpanStatus.Replace) { var st = txt.Length; for (int i = diff.DestIndex; i < diff.DestIndex + diff.Length; i++) { txt += ((TextLine)cp2.GetByIndex(i)).Line + Environment.NewLine; } var stp = txt.Length; txtResult.TextArea.TextView.LineTransformers.Add(new TextColorizer(st, stp, Brushes.Orange)); } else { for (int i = diff.SourceIndex; i < diff.Length; i++) { txt += ((TextLine)cp1.GetByIndex(i)).Line + Environment.NewLine; ; } } } txtResult.Document.Text = txt; }