mirror of
https://code.castopod.org/adaures/castopod
synced 2025-04-23 01:01:20 +00:00
45 lines
1.2 KiB
PHP
45 lines
1.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Modules\Plugins\Core;
|
|
|
|
use League\CommonMark\Environment\Environment;
|
|
use League\CommonMark\Extension\Autolink\AutolinkExtension;
|
|
use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
|
|
use League\CommonMark\Extension\DisallowedRawHtml\DisallowedRawHtmlExtension;
|
|
use League\CommonMark\Extension\SmartPunct\SmartPunctExtension;
|
|
use League\CommonMark\MarkdownConverter;
|
|
use Stringable;
|
|
|
|
class Markdown implements Stringable
|
|
{
|
|
public function __construct(
|
|
protected string $markdown
|
|
) {
|
|
}
|
|
|
|
public function __toString(): string
|
|
{
|
|
return $this->markdown;
|
|
}
|
|
|
|
public function renderHTML(): string
|
|
{
|
|
$config = [
|
|
'html_input' => 'escape',
|
|
'allow_unsafe_links' => false,
|
|
];
|
|
|
|
$environment = new Environment($config);
|
|
$environment->addExtension(new CommonMarkCoreExtension());
|
|
$environment->addExtension(new AutolinkExtension());
|
|
$environment->addExtension(new SmartPunctExtension());
|
|
$environment->addExtension(new DisallowedRawHtmlExtension());
|
|
|
|
$converter = new MarkdownConverter($environment);
|
|
|
|
return (string) $converter->convert($this->markdown);
|
|
}
|
|
}
|