public string GetDifferences(string first, string second) { DiffEngine engine = new DiffEngine(); DiffListHtml source = new DiffListHtml(StringUtil.RemoveTags(first)); DiffListHtml destination = new DiffListHtml(StringUtil.RemoveTags(second)); engine.ProcessDiff(source, destination, DiffEngineLevel.SlowPerfect); StringBuilder builder = new StringBuilder(); foreach (DiffResultSpan span in engine.DiffReport()) { if (span != null) { switch (span.Status) { case DiffResultSpanStatus.NoChange: this.Append(builder, first, span.SourceIndex, span.Length); break; case DiffResultSpanStatus.Replace: this.Append( builder, first, span.SourceIndex, span.Length, "green"); this.Append( builder, second, span.DestIndex, span.Length, "red;text-decoration:line-through;font-weight:bold"); break; case DiffResultSpanStatus.DeleteSource: this.Append( builder, first, span.SourceIndex, span.Length, "green;font-weight:bold"); break; case DiffResultSpanStatus.AddDestination: this.Append( builder, second, span.DestIndex, span.Length, "red;text-decoration:line-through;font-weight:bold"); break; } } } return(builder.ToString()); }
// Sitecore.Text.Diff.View.TwoCoumnsDiffView protected static void Compare(ref string value1, ref string value2) { DiffEngine diffEngine = new DiffEngine(); string value3 = value1; string value4 = value2; value1 = StringUtil.RemoveTags(value1); value2 = StringUtil.RemoveTags(value2); DiffListHtml source = new DiffListHtml(value1); DiffListHtml destination = new DiffListHtml(value2); diffEngine.ProcessDiff(source, destination, DiffEngineLevel.SlowPerfect); System.Collections.ArrayList arrayList = diffEngine.DiffReport(); System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder(); System.Text.StringBuilder stringBuilder2 = new System.Text.StringBuilder(); for (int i = 0; i < arrayList.Count; i++) { DiffResultSpan diffResultSpan = arrayList[i] as DiffResultSpan; if (diffResultSpan != null) { switch (diffResultSpan.Status) { case DiffResultSpanStatus.NoChange: Append(stringBuilder, value1, diffResultSpan.SourceIndex, diffResultSpan.Length); Append(stringBuilder2, value2, diffResultSpan.DestIndex, diffResultSpan.Length); break; case DiffResultSpanStatus.Replace: Append(stringBuilder, value1, diffResultSpan.SourceIndex, diffResultSpan.Length, "blue;font-weight:bold"); Append(stringBuilder2, value2, diffResultSpan.DestIndex, diffResultSpan.Length, "blue;font-weight:bold"); break; case DiffResultSpanStatus.DeleteSource: Append(stringBuilder, value1, diffResultSpan.SourceIndex, diffResultSpan.Length, "blue;font-weight:bold"); Append(stringBuilder2, value2, diffResultSpan.DestIndex, diffResultSpan.Length, "blue;font-weight:bold"); break; case DiffResultSpanStatus.AddDestination: Append(stringBuilder, value1, diffResultSpan.SourceIndex, diffResultSpan.Length, "blue;font-weight:bold"); Append(stringBuilder2, value2, diffResultSpan.DestIndex, diffResultSpan.Length, "blue;font-weight:bold"); break; } } } if (arrayList.Count == 0 && (value3.Contains("<image") || value4.Contains("<image") || value3.Contains("<link") || value4.Contains("<link"))) { stringBuilder.Append("<span>" + value3.Replace("<image", "< image").Replace("<link", "< link") + "</span>"); stringBuilder2.Append("<span>" + value4.Replace("<image", "< image").Replace("<link", "< link") + "</span>"); } value1 = stringBuilder.ToString(); value2 = stringBuilder2.ToString(); }
protected static string Compare(string value1, string value2) { DiffEngine diffEngine = new DiffEngine(); value1 = StringUtil.RemoveTags(value1); value2 = StringUtil.RemoveTags(value2); DiffListHtml source = new DiffListHtml(value1); DiffListHtml destination = new DiffListHtml(value2); diffEngine.ProcessDiff(source, destination, DiffEngineLevel.SlowPerfect); System.Collections.ArrayList arrayList = diffEngine.DiffReport(); System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder(); for (int i = 0; i < arrayList.Count; i++) { DiffResultSpan diffResultSpan = arrayList[i] as DiffResultSpan; if (diffResultSpan != null) { switch (diffResultSpan.Status) { case DiffResultSpanStatus.NoChange: Append(stringBuilder, value1, diffResultSpan.SourceIndex, diffResultSpan.Length); break; case DiffResultSpanStatus.Replace: Append(stringBuilder, value1, diffResultSpan.SourceIndex, diffResultSpan.Length, "green"); Append(stringBuilder, value2, diffResultSpan.DestIndex, diffResultSpan.Length, "red; text-decoration:line-through;font-weight:bold"); break; case DiffResultSpanStatus.DeleteSource: Append(stringBuilder, value1, diffResultSpan.SourceIndex, diffResultSpan.Length, "green;font-weight:bold"); break; case DiffResultSpanStatus.AddDestination: Append(stringBuilder, value2, diffResultSpan.DestIndex, diffResultSpan.Length, "red; text-decoration:line-through;font-weight:bold"); break; } } } return(stringBuilder.ToString()); }