示例#1
0
        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());
        }