public void AssignAnchors(YamlDocument document) { existingAnchors.Clear(); visitedNodes.Clear(); document.Accept(this); Random random = new Random(); foreach (var visitedNode in visitedNodes) { if (visitedNode.Value) { string anchor; do { anchor = random.Next().ToString(CultureInfo.InvariantCulture); } while (existingAnchors.Contains(anchor)); existingAnchors.Add(anchor); visitedNode.Key.Anchor = anchor; } } }
/// <summary> /// Called after this object finishes visiting a <see cref="YamlDocument"/>. /// </summary> /// <param name="document"> /// The <see cref="YamlDocument"/> that has been visited. /// </param> protected virtual void Visited(YamlDocument document) { // Do nothing. }
/// <summary> /// Called when this object is visiting a <see cref="YamlDocument"/>. /// </summary> /// <param name="document"> /// The <see cref="YamlDocument"/> that is being visited. /// </param> protected virtual void Visit(YamlDocument document) { VisitChildren(document); }
void IYamlVisitor.Visit(YamlDocument document) { Visit(document); Visited(document); }