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:----uz4A62xeAtkrcEadm76dkqOD2lBIwcOlz1/+PQzylcoK21Ef/tjPqaAzIOsdTdVayhbqq6NRmExpdqhQ2GmsLFaN+2tiGwlb5WMEzs8M7rThMd0UXY/Ac0pqGqxSpP31sc2eRg7biMn/OlUPI+2/bJIM24IIlguT5XcLRzzBXxSgy2fifzrxCttLDJTHwHrKtfHR9y7GJkuP9Vx1+Oq/0Wk0lT3tKDLc2VdDJJQjJH08W1Adl/EQwHCa7SKHAX3s0nvQ35LqntHfulypMo6cxxxM7YiR8fVkoxcPcxwx32FYSg0/cHeRYhfb3q4fXDceoIB+3fKRKNXTVltU+LlvudoWA1pc1TWozvzClb/e3wXjJ/XN+HI3LkJUJwFoj2C1UVG5Rkj/URYnUVtTbO5dgZG26ObPL2P1GK21OXbRzme8bEWs1S6maVzxZ08thlrIuNiXZDxRcfyLkja5LfbqV5SmNQvpqRrhuIY0K6jkaAU21B6ZqBpysQ3mhYVkOoKLehIfk/wIdTQ9lPpKLfHD1prFkg0QFEd+dK7fZ538NHHclyv18qsWc1O45LvwkZvVhqDGVeEdLk69YUnl3EvLiiJ4AmhbNc4vVp5aqpHxUdWFQ4WXI3O0f/sbTOmRQ54NtT8ycaGhQgsrV2XZDEav1s49e0Ani93bjstJQ+XLYOM=----ATTACHMENT:----NzMzNzk5ODQ0MzQyMjc2NyA4MzIyMDI1NDU2ODAzNzExIDI4NzAyNDAzMjExNzQwMjk=