1
0
cms11/app/Services/Markdown/Renderers/LinkRenderer.php

32 lines
905 B
PHP
Raw Normal View History

<?php
namespace App\Services\Markdown\Renderers;
use App\Classes\Bundle;
use App\Classes\Link;
use League\CommonMark\Extension\CommonMark\Node\Inline\Link as CommonMarkLink;
use League\CommonMark\Node\Node;
use League\CommonMark\Renderer\ChildNodeRendererInterface;
use League\CommonMark\Renderer\NodeRendererInterface;
use League\CommonMark\Util\HtmlElement;
class LinkRenderer implements NodeRendererInterface
{
public function __construct(protected ?Bundle $bundle = null)
{
}
/**
* Renders a link node into an HTML element.
*/
public function render(Node $node, ChildNodeRendererInterface $childRenderer): HtmlElement
{
CommonMarkLink::assertInstanceOf($node);
$innerHtml = $childRenderer->renderNodes($node->children());
$url = $node->getUrl();
return (new Link($url, $innerHtml, $this->bundle))->toHtmlElement();
}
}