public EnsureNode ( string name ) : |
||
name | string | The node name. |
return |
/// <summary> /// Copies to a given node. /// </summary> /// <param name="targetNode">The node wherer to copy.</param> /// <param name="name">The node name.</param> public void CopyTo(CSharpSyntaxMatchingNode targetNode, string name) { // Data validation Ensure.That(() => name).IsNotNullOrWhiteSpace(); Ensure.That(() => targetNode).IsNotNull(); // Ensure and retrieve a node the the copy CSharpSyntaxMatchingNode newNode = targetNode.EnsureNode(name); // Add syntax node to the created node if (null != this.matchingSyntaxNodes) { // Lazy create the syntax nodes if (null == newNode.matchingSyntaxNodes) { newNode.matchingSyntaxNodes = new List <SyntaxNode>(); } // Merge syntax nodes int[] indexes = newNode.matchingSyntaxNodes.Select(x => x.Span.Start).ToArray(); newNode.matchingSyntaxNodes.AddRange(this.matchingSyntaxNodes.Where(x => !indexes.Contains(x.Span.Start))); } // Recurse for applying copy to the children if (null != this.children && this.children.Count > 0) { string[] childrenName = this.children.Keys.ToArray(); foreach (string childName in childrenName) { this.children[childName].CopyTo(newNode, childName); } } }
/// <summary> /// Copies to a given node. /// </summary> /// <param name="targetNode">The node wherer to copy.</param> /// <param name="name">The node name.</param> public void CopyTo(CSharpSyntaxMatchingNode targetNode, string name) { if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentException($"'{nameof(name)}' is null or whitespace"); } if (targetNode == null) { throw new ArgumentNullException(nameof(targetNode)); } // Ensure and retrieve a node the the copy CSharpSyntaxMatchingNode newNode = targetNode.EnsureNode(name); // Add syntax node to the created node if (null != this.matchingSyntaxNodes) { // Lazy create the syntax nodes if (null == newNode.matchingSyntaxNodes) { newNode.matchingSyntaxNodes = new List <SyntaxNode>(); } // Merge syntax nodes int[] indexes = newNode.matchingSyntaxNodes.Select(x => x.Span.Start).ToArray(); newNode.matchingSyntaxNodes.AddRange(this.matchingSyntaxNodes.Where(x => !indexes.Contains(x.Span.Start))); } // Recurse for applying copy to the children if (null != this.children && this.children.Count > 0) { string[] childrenName = this.children.Keys.ToArray(); foreach (string childName in childrenName) { this.children[childName].CopyTo(newNode, childName); } } }
/// <summary> /// Copies to a given node. /// </summary> /// <param name="targetNode">The node wherer to copy.</param> /// <param name="name">The node name.</param> public void CopyTo(CSharpSyntaxMatchingNode targetNode, string name) { // Data validation Ensure.That(() => name).IsNotNullOrWhiteSpace(); Ensure.That(() => targetNode).IsNotNull(); // Ensure and retrieve a node the the copy CSharpSyntaxMatchingNode newNode = targetNode.EnsureNode(name); // Add syntax node to the created node if (null != this.matchingSyntaxNodes) { // Lazy create the syntax nodes if (null == newNode.matchingSyntaxNodes) { newNode.matchingSyntaxNodes = new List<SyntaxNode>(); } // Merge syntax nodes int[] indexes = newNode.matchingSyntaxNodes.Select(x => x.Span.Start).ToArray(); newNode.matchingSyntaxNodes.AddRange(this.matchingSyntaxNodes.Where(x => !indexes.Contains(x.Span.Start))); } // Recurse for applying copy to the children if (null != this.children && this.children.Count > 0) { string[] childrenName = this.children.Keys.ToArray(); foreach (string childName in childrenName) { this.children[childName].CopyTo(newNode, childName); } } }
/// <summary> /// Copies to a given node. /// </summary> /// <param name="targetNode">The node wherer to copy.</param> /// <param name="name">The node name.</param> public void CopyTo(CSharpSyntaxMatchingNode targetNode, string name) { if(string.IsNullOrWhiteSpace(name)) { throw new ArgumentException($"'{nameof(name)}' is null or whitespace"); } if(targetNode == null) { throw new ArgumentNullException(nameof(targetNode)); } // Ensure and retrieve a node the the copy CSharpSyntaxMatchingNode newNode = targetNode.EnsureNode(name); // Add syntax node to the created node if (null != this.matchingSyntaxNodes) { // Lazy create the syntax nodes if (null == newNode.matchingSyntaxNodes) { newNode.matchingSyntaxNodes = new List<SyntaxNode>(); } // Merge syntax nodes int[] indexes = newNode.matchingSyntaxNodes.Select(x => x.Span.Start).ToArray(); newNode.matchingSyntaxNodes.AddRange(this.matchingSyntaxNodes.Where(x => !indexes.Contains(x.Span.Start))); } // Recurse for applying copy to the children if (null != this.children && this.children.Count > 0) { string[] childrenName = this.children.Keys.ToArray(); foreach (string childName in childrenName) { this.children[childName].CopyTo(newNode, childName); } } }