public function testRenderWithChildren() { $class = $this->getRendererClass(); $renderer = new $class(); $list = new ListBlock(new ListData()); $listItem1 = new ListItem(new ListData()); $paragraph = new Paragraph(); $paragraph->appendChild(new Text('Item 1')); $listItem1->appendChild($paragraph); $listItem2 = new ListItem(new ListData()); $paragraph = new Paragraph(); $paragraph->appendChild(new Text('Item 2')); $listItem2->appendChild($paragraph); $list->appendChild($listItem1); $list->appendChild($listItem2); $color = new Color(); $color->setForceStyle(true); $cliRenderer = new CliRenderer([Paragraph::class => new ParagraphRenderer(), ListItem::class => new ListItemRenderer()], [Text::class => new TextRenderer()], $color); $this->assertEquals("[33m * [0mItem 1\n\n[33m * [0mItem 2\n", $renderer->render($list, $cliRenderer)); }
/** * @param Entry[] $entries * @return ListBlock */ protected function render(array $entries) { $data = new ListData(); $data->type = ListBlock::TYPE_UNORDERED; $list = new ListBlock($data); $list->data['attributes']['class'] = 'TableOfContents'; foreach ($entries as $entry) { $item = new ListItem($data); $a = new Link('#' . $entry->getId()); $content = $entry->getContent(); if ($content != null) { foreach ($this->cloneChildren($content) as $node) { $a->appendChild($node); } } $p = new Paragraph(); $p->appendChild($a); $item->appendChild($p); if (!empty($entry->getChildren())) { $item->appendChild($this->render($entry->getChildren())); } $list->appendChild($item); } return $list; }