Todaymade\Daux\Format\HTML\ContentTypes\Markdown\TOC\Processor::processDocument PHP Метод

processDocument() публичный Метод

public processDocument ( Document $document ) : void
$document League\CommonMark\Block\Element\Document
Результат void
    public function processDocument(Document $document)
    {
        /** @var TableOfContents[] $tocs */
        $tocs = [];
        $headings = [];
        $walker = $document->walker();
        while ($event = $walker->next()) {
            $node = $event->getNode();
            if ($node instanceof TableOfContents && !$event->isEntering()) {
                $tocs[] = $node;
                continue;
            }
            if (!$node instanceof Heading || !$event->isEntering()) {
                continue;
            }
            $this->ensureHeadingHasId($node);
            $headings[] = new Entry($node);
        }
        if (count($headings) && (count($tocs) || $this->hasAutoTOC())) {
            $generated = $this->generate($headings);
            if (count($tocs)) {
                foreach ($tocs as $toc) {
                    $toc->appendChild($this->render($generated->getChildren()));
                }
            } else {
                $document->prependChild($this->render($generated->getChildren()));
            }
        }
    }