From d3a9f17fc2f8d0bcbacc4cc7bbbec3b7e21b773a Mon Sep 17 00:00:00 2001 From: Eric Lippmann Date: Wed, 28 May 2014 17:18:07 +0200 Subject: [PATCH] doc/parser: Return the DocTocHtmlRenderer instead of an array refs #4820 --- modules/doc/library/Doc/DocParser.php | 37 ++++++++++++--------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/modules/doc/library/Doc/DocParser.php b/modules/doc/library/Doc/DocParser.php index fc87faf27..3bd6b3a1e 100644 --- a/modules/doc/library/Doc/DocParser.php +++ b/modules/doc/library/Doc/DocParser.php @@ -10,8 +10,6 @@ use RecursiveIteratorIterator; use RecursiveDirectoryIterator; use Parsedown; use Icinga\Exception\NotReadableError; -use Icinga\Web\Menu; -use Icinga\Web\Url; /** * Parser for documentation written in Markdown @@ -59,10 +57,10 @@ class DocParser ); $fileInfos = iterator_to_array($iter); natcasesort($fileInfos); - $cat = array(); - $toc = array((object) array( + $cat = array(); + $tocStack = array((object) array( 'level' => 0, - 'item' => new Menu('doc') + 'node' => new DocToc() )); $itemPriority = 1; foreach ($fileInfos as $fileInfo) { @@ -84,30 +82,29 @@ class DocParser list($header, $level) = $header; $id = $this->extractHeaderId($header); $nofollow = false; - $this->reduceToc($toc, $level); + $this->reduceToc($tocStack, $level); if ($id === null) { $path = array(); - foreach (array_slice($toc, 1) as $entry) { - $path[] = $entry->item->getTitle(); + foreach (array_slice($tocStack, 1) as $entity) { + $path[] = $entity->node->getValue()->title; } $path[] = $header; $id = implode('-', $path); $nofollow = true; } $id = urlencode(str_replace('.', '.', strip_tags($id))); - $item = end($toc)->item->addChild( - $id, - array( + $node = end($tocStack)->node->appendChild( + (object) array( 'id' => $id, 'title' => $header, 'priority' => $itemPriority++, // Post-increment is on purpose 'nofollow' => $nofollow ) ); - $toc[] = ((object) array( + $tocStack[] = (object) array( 'level' => $level, - 'item' => $item - )); + 'node' => $node + ); $line = '' . PHP_EOL . $line; } $cat[] = $line; @@ -120,7 +117,7 @@ class DocParser array($this, 'highlight'), $html ); - return array($html, $toc[0]->item); + return array($html, new DocTocHtmlRenderer($tocStack[0]->node)); } /** @@ -200,14 +197,14 @@ class DocParser } /** - * Reduce the toc to the given level + * Reduce the toc stack to the given level * - * @param array &$toc + * @param array &$tocStack * @param int $level */ - protected function reduceToc(array &$toc, $level) { - while (end($toc)->level >= $level) { - array_pop($toc); + protected function reduceToc(array &$tocStack, $level) { + while (end($tocStack)->level >= $level) { + array_pop($tocStack); } } }