internal IEnumerable <UtokenBase> YieldAfterComments(UnparsableAst owner, Comments comments, UnparseCommentDelegate unparseComment) { IList <Comment> afterComments; IList <Comment> afterCommentsForFormatter; Func <IEnumerable <Comment>, int, IEnumerable <Comment> > skipOrTake; if (direction == Unparser.Direction.LeftToRight) { afterComments = comments.Right; afterCommentsForFormatter = comments.Right; skipOrTake = Enumerable.Take; } else { afterComments = comments.Left.ReverseOptimized(); afterCommentsForFormatter = comments.Left; skipOrTake = Enumerable.Skip; } foreach (var afterComment in afterComments.Select((beforeComment, commentIndex) => new { Value = beforeComment, Index = commentIndex })) { int index; int commentCountToSkipOrTake; if (direction == Unparser.Direction.LeftToRight) { index = afterComment.Index; commentCountToSkipOrTake = index; } else { index = afterComments.Count - 1 - afterComment.Index; commentCountToSkipOrTake = index + 1; } yield return(formatter.GetUtokensBetweenCommentAndOwner(owner, afterComment.Value, index, afterComments.Count, skipOrTake(afterCommentsForFormatter, commentCountToSkipOrTake)) .SetKind(InsertedUtokens.Kind.Between) .SetAffected(owner)); foreach (UtokenBase utoken in unparseComment(owner, afterComment.Value)) { yield return(utoken); } } }
internal IEnumerable<UtokenBase> YieldAfterComments(UnparsableAst owner, Comments comments, UnparseCommentDelegate unparseComment) { IList<Comment> afterComments; IList<Comment> afterCommentsForFormatter; Func<IEnumerable<Comment>, int, IEnumerable<Comment>> skipOrTake; if (direction == Unparser.Direction.LeftToRight) { afterComments = comments.Right; afterCommentsForFormatter = comments.Right; skipOrTake = Enumerable.Take; } else { afterComments = comments.Left.ReverseOptimized(); afterCommentsForFormatter = comments.Left; skipOrTake = Enumerable.Skip; } foreach (var afterComment in afterComments.Select((beforeComment, commentIndex) => new { Value = beforeComment, Index = commentIndex })) { int index; int commentCountToSkipOrTake; if (direction == Unparser.Direction.LeftToRight) { index = afterComment.Index; commentCountToSkipOrTake = index; } else { index = afterComments.Count - 1 - afterComment.Index; commentCountToSkipOrTake = index + 1; } yield return formatter.GetUtokensBetweenCommentAndOwner(owner, afterComment.Value, index, afterComments.Count, skipOrTake(afterCommentsForFormatter, commentCountToSkipOrTake)) .SetKind(InsertedUtokens.Kind.Between) .SetAffected(owner); foreach (UtokenBase utoken in unparseComment(owner, afterComment.Value)) yield return utoken; } }