private string GetAutoWrappingForMarkdown(string[] lines) { // this is an implementation of https://github.com/PowerShell/platyPS/issues/93 // algorithm: identify chunks that represent lists // Every entry in a list should be preserved as is and 1 EOL between them // Every entry not in a list should be split with GetAutoWrappingForNonListLine // delimiters between lists and non-lists are 2 EOLs. var newLines = new List <string>(); for (int i = 0; i < lines.Length; i++) { if (MarkdownParser.HasListPrefix(lines[i])) { if (i > 0 && !MarkdownParser.HasListPrefix(lines[i - 1])) { // we are in a list and it just started newLines.Add(Environment.NewLine + lines[i]); } else { newLines.Add(lines[i]); } } else { if (i > 0) { // we are just finished a list newLines.Add(Environment.NewLine + GetAutoWrappingForNonListLine(lines[i])); } else { newLines.Add(GetAutoWrappingForNonListLine(lines[i])); } } } return(string.Join(Environment.NewLine, newLines)); }