Skip to content

Commit 68e9742

Browse files
committed
Optimize ToC placeholder replacements
1 parent e2ae17d commit 68e9742

File tree

1 file changed

+4
-8
lines changed

1 file changed

+4
-8
lines changed

src/Extension/TableOfContents/TableOfContentsBuilder.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use League\CommonMark\Extension\TableOfContents\Node\TableOfContents;
2020
use League\CommonMark\Extension\TableOfContents\Node\TableOfContentsPlaceholder;
2121
use League\CommonMark\Node\Block\Document;
22+
use League\CommonMark\Node\NodeIterator;
2223
use League\Config\ConfigurationAwareInterface;
2324
use League\Config\ConfigurationInterface;
2425
use League\Config\Exception\InvalidConfigurationException;
@@ -81,18 +82,13 @@ private function insertBeforeFirstLinkedHeading(Document $document, TableOfConte
8182

8283
private function replacePlaceholders(Document $document, TableOfContents $toc): void
8384
{
84-
$walker = $document->walker();
85-
while ($event = $walker->next()) {
85+
foreach ($document->iterator(NodeIterator::FLAG_BLOCKS_ONLY) as $node) {
8686
// Add the block once we find a placeholder (and we're about to leave it)
87-
if (! $event->getNode() instanceof TableOfContentsPlaceholder) {
87+
if (! $node instanceof TableOfContentsPlaceholder) {
8888
continue;
8989
}
9090

91-
if ($event->isEntering()) {
92-
continue;
93-
}
94-
95-
$event->getNode()->replaceWith(clone $toc);
91+
$node->replaceWith(clone $toc);
9692
}
9793
}
9894

0 commit comments

Comments
 (0)