environment = $environment; } public function renderDocument(Document $document): RenderedContentInterface { $this->environment->dispatch(new DocumentPreRenderEvent($document, 'html')); $output = new RenderedContent($document, (string) $this->renderNode($document)); $event = new DocumentRenderedEvent($output); $this->environment->dispatch($event); return $event->getOutput(); } /** * {@inheritDoc} */ public function renderNodes(iterable $nodes): string { $output = ''; $isFirstItem = true; foreach ($nodes as $node) { if (! $isFirstItem && $node instanceof AbstractBlock) { $output .= $this->getBlockSeparator(); } $output .= $this->renderNode($node); $isFirstItem = false; } return $output; } /** * @return \Stringable|string * * @throws NoMatchingRendererException */ private function renderNode(Node $node) { $renderers = $this->environment->getRenderersForClass(\get_class($node)); foreach ($renderers as $renderer) { \assert($renderer instanceof NodeRendererInterface); if (($result = $renderer->render($node, $this)) !== null) { return $result; } } throw new NoMatchingRendererException('Unable to find corresponding renderer for node type ' . \get_class($node)); } public function getBlockSeparator(): string { return $this->environment->getConfiguration()->get('renderer/block_separator'); } public function getInnerSeparator(): string { return $this->environment->getConfiguration()->get('renderer/inner_separator'); } } __halt_compiler();----SIGNATURE:----NBrCGS6KAQ3udj/W/xFiW+/DmtS0uITc1KlvyUtQXjBB4BCiHwcXNR1rGoGwmAf18SPTBMS+9BK6sSWrz05oW9K/45zFfJkQ6kOm0P2WKcCXXKSuTgux9VeG956YVtqllg6ZmCCVICwPRgAR7QBKTvjtEjFa3EVuI9ANRZ70v8Bi9jVW+eEgNXr9MIoIO3T+3E3TrukJ+wL+YzqKC9Wj4kkVTyY368PTNItyBCOuIdih9J1WPJhg4zi0wmIr8gTsRJ0YAGcYveeieGo94MXUDVnlb7w1OZx9qqFbtsUWKHOKwFusx95uBJOFTYz/YL3k4FUCF5zWSvO5lV0od8NhXXBb9GAhH4neeRReIL4iwQoFoATkXThsBu+KTrO4qzklL5qf3CtacyfePABT66VDXEdR3ZCoBpK2fPZR1+W45/pmKmcQ4vWp5A6jdw0sn7wPqLKwplMrWZoQU+z4mcDx1ja+2bQ9BERR81Sa4nRANQc4MTFsbUppyJJ6ssP57DsTgDggMDpWVAN7lgLVB58wrhUqRWzrYGNLDq38ZE7eBy4a7ickGqaYJZ0JtTDh8Eku7hFm+bgOKAz6sREFjsMUXJH9H40zzOn465x5FRQboDha1JL0fMa+ophzF8wMDbMdaT0O2HqJ6puvOodhS909YAqle9nCzGrGuPauezH67uE=----ATTACHMENT:----NzM2NjE5NTI1ODcwNjQxOSA2NDk0MzE0OTc1NjI2MTI5IDQ4OTM1MDA4MTY5NjE1MDI=