/// <summary> /// Creates a new token from this token with the leading trivia specified.. /// </summary> public SyntaxToken WithLeadingTrivia(IEnumerable <SyntaxTrivia> trivia) { var greenList = trivia == null ? null : trivia.Select(t => t.UnderlyingNode); return(_token != null ? new SyntaxToken(null, _token.WithLeadingTrivia(_token.CreateList(greenList)), position: 0, index: 0) : default(SyntaxToken)); }
/// <summary> /// Creates a new <see cref="SyntaxTriviaList"/> with the element at the specified index removed. /// </summary> /// <param name="index">The index identifying the element to remove.</param> public SyntaxTriviaList RemoveAt(int index) { if (index < 0 || index >= this.Count) { throw new ArgumentOutOfRangeException("index"); } var list = this.ToList(); list.RemoveAt(index); return(new SyntaxTriviaList(default(SyntaxToken), _node.CreateList(list.Select(n => n.UnderlyingNode)), 0, 0)); }
private static SyntaxNodeOrTokenList CreateList(GreenNode creator, List<SyntaxNodeOrToken> items) { if (items.Count == 0) { return default(SyntaxNodeOrTokenList); } var newGreen = creator.CreateList(items.Select(n => n.UnderlyingNode)); if (newGreen.IsToken) { newGreen = creator.CreateList(new[] { newGreen }, alwaysCreateListNode: true); } return new SyntaxNodeOrTokenList(newGreen.CreateRed(), 0); }
/// <summary> /// Creates a new <see cref="SyntaxTokenList"/> with the specified tokens insert at the index. /// </summary> /// <param name="index">The index to insert the new tokens.</param> /// <param name="tokens">The tokens to insert.</param> public SyntaxTokenList InsertRange(int index, IEnumerable <SyntaxToken> tokens) { if (index < 0 || index > this.Count) { throw new ArgumentOutOfRangeException(nameof(index)); } if (tokens == null) { throw new ArgumentNullException(nameof(tokens)); } var items = tokens.ToList(); if (items.Count == 0) { return(this); } var list = this.ToList(); list.InsertRange(index, tokens); if (list.Count == 0) { return(this); } return(new SyntaxTokenList(null, GreenNode.CreateList(list.Select(n => n.RequiredNode)), 0, 0)); }
/// <summary> /// Creates a new token from this token with the trailing trivia specified. /// </summary> public SyntaxToken WithTrailingTrivia(IEnumerable <SyntaxTrivia>?trivia) { var greenList = trivia?.Select(t => t.RequiredUnderlyingNode); return(Node != null ? new SyntaxToken(null, Node.WithTrailingTrivia(GreenNode.CreateList(greenList)), position: 0, index: 0) : default(SyntaxToken)); }
private static SyntaxList <TNode> CreateList(GreenNode creator, List <TNode> items) { if (items.Count == 0) { return(default(SyntaxList <TNode>)); } var newGreen = creator.CreateList(items.Select(n => n.Green)); return(new SyntaxList <TNode>(newGreen.CreateRed())); }
private static SyntaxNodeOrTokenList CreateList(List <SyntaxNodeOrToken> items) { if (items.Count == 0) { return(default(SyntaxNodeOrTokenList)); } var newGreen = GreenNode.CreateList(items.Select(n => n.UnderlyingNode !)) !; if (newGreen.IsToken) { newGreen = GreenNode.CreateList(new[] { newGreen }, alwaysCreateListNode: true) !; } return(new SyntaxNodeOrTokenList(newGreen.CreateRed(), 0)); }