WikiFunctions.WikiDiff.LineChanged C# (CSharp) Method

LineChanged() private method

private LineChanged ( int leftLine, int rightLine ) : void
leftLine int
rightLine int
return void
        private void LineChanged(int leftLine, int rightLine)
        {
            // some kind of glitch with the diff engine
            if (LeftLines[leftLine] == RightLines[rightLine])
            {
                ContextLine(rightLine);
                return;
            }

            StringBuilder left = new StringBuilder();
            StringBuilder right = new StringBuilder();

            List<Word> leftList = Word.SplitString(LeftLines[leftLine]);
            List<Word> rightList = Word.SplitString(RightLines[rightLine]);

            diff = new Diff(leftList, rightList, Word.Comparer);

            foreach (Diff.Hunk h in diff)
            {
                if (h.Same)
                {
                    for (int i = 0; i < h.Left.Count; i++)
                    {
                        WhitespaceDiff(left, rightList[h.Right.Start + i], leftList[h.Left.Start + i]);
                        WhitespaceDiff(right, leftList[h.Left.Start + i], rightList[h.Right.Start + i]);
                    }
                }
                else
                {
                    WordDiff(left, h.Left, h.Right, leftList, rightList);

                    WordDiff(right, h.Right, h.Left, rightList, leftList);
                }
            }

            if (Variables.RTL)
            {
                Result.AppendFormat(@"<tr onclick='window.external.GoTo({1})' ondblclick='window.external.UndoChange({0},{1})'>
              <td>+</td>
              <td class='diff-addedline'>", rightLine, leftLine);
                Result.Append(right);
                Result.Append(@"  </td>
              <td>-</td>
              <td class='diff-deletedline'>");
                Result.Append(left);
                Result.Append(@"  </td>
            </tr>");
            }
            else
            {
                Result.AppendFormat(@"<tr onclick='window.external.GoTo({1})' ondblclick='window.external.UndoChange({0},{1})'>
              <td>-</td>
              <td class='diff-deletedline'>", leftLine, rightLine);
                Result.Append(left);
                Result.Append(@"  </td>
              <td>+</td>
              <td class='diff-addedline'>");
                Result.Append(right);
                Result.Append(@"  </td>
            </tr>");
            }
        }