/// <summary> /// Returns a <see cref="string"/> that represents this instance. /// </summary> /// <returns> /// A <see cref="string"/> that represents this instance. /// </returns> internal override string ToString(RecursionLevel level) { if (!level.TryIncrement()) { return(MaximumRecursionLevelReachedToStringValue); } using var textBuilder = StringBuilderPool.Rent(); var text = textBuilder.Builder; text.Append("[ "); foreach (var child in children) { if (text.Length > 2) { text.Append(", "); } text.Append(child.ToString(level)); } text.Append(" ]"); level.Decrement(); return(text.ToString()); }
/// <summary> /// Recursively enumerates all the nodes from the document, starting on the current node, /// and throwing <see cref="MaximumRecursionLevelReachedException"/> /// if <see cref="RecursionLevel.Maximum"/> is reached. /// </summary> internal override IEnumerable <YamlNode> SafeAllNodes(RecursionLevel level) { level.Increment(); yield return(this); foreach (var child in children) { foreach (var node in child.SafeAllNodes(level)) { yield return(node); } } level.Decrement(); }
internal override string ToString(RecursionLevel level) { if (!level.TryIncrement()) { return("WARNING! INFINITE RECURSION!"); } StringBuilder stringBuilder = new StringBuilder("[ "); foreach (YamlNode child in children) { if (stringBuilder.Length > 2) { stringBuilder.Append(", "); } stringBuilder.Append(child.ToString(level)); } stringBuilder.Append(" ]"); level.Decrement(); return(stringBuilder.ToString()); }
/// <summary> /// Returns a <see cref="System.String"/> that represents this instance. /// </summary> /// <returns> /// A <see cref="System.String"/> that represents this instance. /// </returns> internal override string ToString(RecursionLevel level) { if (!level.TryIncrement()) { return(MaximumRecursionLevelReachedToStringValue); } var text = new StringBuilder("{ "); foreach (var child in children) { if (text.Length > 2) { text.Append(", "); } text.Append("{ ").Append(child.Key.ToString(level)).Append(", ").Append(child.Value.ToString(level)).Append(" }"); } text.Append(" }"); level.Decrement(); return(text.ToString()); }