public static SyntaxTriviaList RemoveConsecutiveEndLines(this SyntaxTriviaList trivia) { var result = SyntaxFactory.TriviaList(); var list = trivia.ToList(); if (list.Count > 1) { for (int i = 0; i < list.Count; i++) { if (i < list.Count - 1 && list[i].IsKind(SyntaxKind.EndOfLineTrivia) && list[i + 1].IsKind(SyntaxKind.EndOfLineTrivia)) { continue; } result = result.Add(list[i]); } } else { result = result.AddRange(list); } return(result); }
public static bool HasVisibleEndOfLineTrivia(this SyntaxTriviaList trivia) { var list = trivia.ToList(); if (list.Count > 1) { for (int i = 0; i < list.Count - 1; i++) { if (list[i].IsKind(SyntaxKind.SingleLineCommentTrivia) || list[i].IsKind(SyntaxKind.MultiLineCommentTrivia)) { i++; continue; } if (list[i].IsKind(SyntaxKind.EndOfLineTrivia)) { return(true); } } } else if (list.Any(x => x.IsKind(SyntaxKind.EndOfLineTrivia))) { return(true); } return(false); }
protected SyntaxTriviaList CleanUpList(SyntaxTriviaList syntaxTrivias, int exactNumberOfBlanks) { var lineBreaksAtBeginning = syntaxTrivias.TakeWhile(t => t.IsKind(SyntaxKind.EndOfLineTrivia)).Count(); if (lineBreaksAtBeginning > exactNumberOfBlanks) { syntaxTrivias = syntaxTrivias.Skip(lineBreaksAtBeginning - exactNumberOfBlanks) .ToSyntaxTriviaList(); } else if (lineBreaksAtBeginning < exactNumberOfBlanks) { var newList = syntaxTrivias.ToList(); for (var i = lineBreaksAtBeginning; i < exactNumberOfBlanks; i++) { newList.Insert(0, _endOfLineTrivia); } syntaxTrivias = new SyntaxTriviaList().AddRange(newList); } return(syntaxTrivias); }