예제 #1
0
        private void ParseDiffs(string oldScript, string newScript)
        {
            StringBuilder   textBuilder = new StringBuilder();
            List <DiffItem> diffItems   = Diff.DiffTexts(oldScript, newScript);

            foreach (DiffItem diffItem in diffItems)
            {
                switch (diffItem.type)
                {
                case DiffItem.DiffType.Deleted:
                case DiffItem.DiffType.Inserted:
                    DiffSegment segment = new DiffSegment()
                    {
                        StartOffset = textBuilder.Length,
                        Length      = diffItem.data.Length,
                        type        = diffItem.type
                    };
                    diffHighlighter.AddSegment(segment);
                    break;
                }
                textBuilder.AppendLine(diffItem.data);
            }

            try
            {
                string newline = Environment.NewLine;
                textBuilder.Remove(textBuilder.Length - newline.Length, newline.Length);
            }
            catch (ArgumentOutOfRangeException) {} // pass

            scriptView.Text = textBuilder.ToString();
        }
예제 #2
0
        public ShowDiffWindow(string oldScript, string newScript)
        {
            InitializeComponent();
            List <DiffItem> diffItems = Diff.DiffTexts(oldScript, newScript);

            for (int i = 0; i < diffItems.Count; i++)
            {
                DiffItem diffItem = diffItems[i];

                BrushConverter bc = new BrushConverter();
                TextRange      tr = new TextRange(scriptText.Document.ContentEnd, scriptText.Document.ContentEnd)
                {
                    Text = diffItem.data + Environment.NewLine
                };
                if (diffItem.type == "Deleted")
                {
                    tr.ApplyPropertyValue(TextElement.BackgroundProperty, "#FFF8FF");
                }
                else if (diffItem.type == "Inserted")
                {
                    tr.ApplyPropertyValue(TextElement.BackgroundProperty, "#F8FFF8");
                }
            }
        }