private IEnumerable <InlineItemLine> BreakToRunLines(IEnumerable <Run> runs)
        {
            var lines       = new List <InlineItemLine>();
            var currentLine = new InlineItemLine();

            foreach (var run in runs)
            {
                if (run.Text.Contains(Environment.NewLine))
                {
                    var parts = run.Text.SplitToLines();
                    foreach (var part in parts)
                    {
                        if (!string.IsNullOrEmpty(part))
                        {
                            currentLine.AddItem(CloneFormat(run, part));
                        }
                        lines.Add(currentLine);
                        currentLine = new InlineItemLine();
                    }
                }
                else
                {
                    currentLine.AddItem(run);
                }
            }
            lines.Add(currentLine);
            return(lines.ToArray());
        }
        private IEnumerable <InlineItemLine> AddEmptyLines(List <InlineItemLine> lines, IEnumerable <int> emptyLineOffsets)
        {
            var indexes = emptyLineOffsets.OrderBy(o => o);

            foreach (var index in indexes)
            {
                var line = new InlineItemLine();
                line.AddItem(CreateRun(String.Empty, regularWeight));
                lines.Insert(index, line);
            }
            return(lines);
        }
            public InlineItemLine RemoveHeadingWhiteSpace()
            {
                var newLine    = new InlineItemLine();
                var startIndex = items.FindIndex(i => !String.IsNullOrWhiteSpace(GetItemText(i)));

                if (startIndex < items.Count)
                {
                    newLine.items.AddRange(items.GetRange(startIndex, items.Count - startIndex));
                    var first = newLine.items.First();
                    newLine.items.RemoveAt(0);
                    newLine.items.Insert(0, CloneFormat((Run)first, GetItemText(first).TrimStart()));
                }
                return(newLine);
            }
 public InlineItemLine RemoveHeadingWhiteSpace()
 {
     var newLine = new InlineItemLine();
     var startIndex = items.FindIndex(i => !String.IsNullOrWhiteSpace(GetItemText(i)));
     if (startIndex < items.Count)
     {
         newLine.items.AddRange(items.GetRange(startIndex, items.Count - startIndex));
         var first = newLine.items.First();
         newLine.items.RemoveAt(0);
         newLine.items.Insert(0, CloneFormat((Run)first, GetItemText(first).TrimStart()));
     }
     return newLine;
 }
 private IEnumerable<InlineItemLine> BreakToRunLines(IEnumerable<Run> runs)
 {
     var lines = new List<InlineItemLine>();
     var currentLine = new InlineItemLine();
     foreach (var run in runs)
     {
         if (run.Text.Contains(Environment.NewLine))
         {
             var parts = run.Text.SplitToLines();
             foreach (var part in parts)
             {
                 if(!string.IsNullOrEmpty(part))
                     currentLine.AddItem(CloneFormat(run, part));
                 lines.Add(currentLine);
                 currentLine = new InlineItemLine();
             }
         }
         else
         {
             currentLine.AddItem(run);
         }
     }
     lines.Add(currentLine);
     return lines.ToArray();
 }
 private IEnumerable<InlineItemLine> AlignIndention(InlineItemLine[] lines, IHighlightRawInfo info)
 {
     if (lines.Any())
     {
         var lastHead = lines.Last().GetHeadingWhiteSpace();
         var firstHead = lines.First().GetHeadingWhiteSpace();
         if (firstHead.Equals(string.Empty) && !lastHead.Equals(string.Empty))
         {
             lines.First().AddBeginning(CreateRun(lastHead, regularWeight));
         }
     }
     return lines;
 }
 private void AddLineNumberHyperlinks(IHighlightRawInfo infor, int num, InlineItemLine line)
 {
     foreach (var item in line.GetItems())
      {
          var run = item as Run;
          if (run != null)
              AddLineNumberHyperlink(run, num, infor);
      }
 }
        private InlineItemLine[] AddLineNumber(IHighlightRawInfo infor, InlineItemLine[] lines)
        {
            var startLine = infor.StartLineNumber;
             int i = 0;
             var offsets = infor.Offsets ?? lines.Select(n => i ++).ToArray();
             var offsetIndex = 0;

             int num = 0, preNum = 0;
             foreach (var line in lines)
             {
                 if (offsets.Count() > offsetIndex)
                 {
                     num = startLine + offsets.ElementAt(offsetIndex++);
                     preNum = num;
                 }
                 else
                 {
                     num = preNum + 1;
                     preNum = num;
                 }
                line.AddBeginning(CreateRun("\t", regularWeight));
                line.AddBeginning(CreateRun(num.ToString(), regularWeight));
                AddLineNumberHyperlinks(infor, num, line);
             }
             return lines;
        }
 private IEnumerable<InlineItemLine> AddEmptyLines(List<InlineItemLine> lines, IEnumerable<int> emptyLineOffsets)
 {
     var indexes = emptyLineOffsets.OrderBy(o => o);
     foreach (var index in indexes)
     {
         var line = new InlineItemLine();
         line.AddItem(CreateRun(String.Empty, regularWeight));
         lines.Insert(index, line);
     }
     return lines;
 }