33 lines
914 B
PHP
33 lines
914 B
PHP
<?php
|
|
|
|
namespace App\Services\Markdown\Renderers;
|
|
|
|
use App\Classes\Bundle;
|
|
use App\Classes\Link;
|
|
use App\Models\Url;
|
|
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)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* 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 Url::from($url, $this->bundle)->toHtmlElement($innerHtml);
|
|
}
|
|
}
|