private void Aggregate(MarkdownTokenAggregateContext aggContext) { while (aggContext.NextToken()) { _aggregator.Aggregate(aggContext); } }
public ImmutableArray <IMarkdownToken> Rewrite(ImmutableArray <IMarkdownToken> tokens) { var context = new MarkdownTokenAggregateContext(_parents.Peek(), tokens); Aggregate(context); for (int i = 0; i < context.TokenLength; i++) { var token = context.GetToken(i); if (token is IMarkdownRewritable <IMarkdownToken> rewritable) { _parents.Push(token); var rewrittenToken = rewritable.Rewrite(this); if (rewrittenToken != null && !object.ReferenceEquals(rewrittenToken, token)) { context.SetToken(i, rewrittenToken); } _parents.Pop(); Aggregate(context); } } return(context.ImmutableTokens); }