chore: commit remaining workspace changes
This commit is contained in:
42
app/Services/Academy/AcademyLessonMarkdownRenderer.php
Normal file
42
app/Services/Academy/AcademyLessonMarkdownRenderer.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Services\Academy;
|
||||
|
||||
use League\CommonMark\Environment\Environment;
|
||||
use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
|
||||
use League\CommonMark\Extension\GithubFlavoredMarkdownExtension;
|
||||
use League\CommonMark\MarkdownConverter;
|
||||
|
||||
final class AcademyLessonMarkdownRenderer
|
||||
{
|
||||
private ?MarkdownConverter $converter = null;
|
||||
|
||||
public function render(?string $markdown): string
|
||||
{
|
||||
$trimmed = trim((string) $markdown);
|
||||
|
||||
if ($trimmed === '') {
|
||||
return '';
|
||||
}
|
||||
|
||||
return trim((string) $this->converter()->convert($trimmed)->getContent());
|
||||
}
|
||||
|
||||
private function converter(): MarkdownConverter
|
||||
{
|
||||
if ($this->converter instanceof MarkdownConverter) {
|
||||
return $this->converter;
|
||||
}
|
||||
|
||||
$environment = new Environment([
|
||||
'html_input' => 'strip',
|
||||
'allow_unsafe_links' => false,
|
||||
]);
|
||||
$environment->addExtension(new CommonMarkCoreExtension());
|
||||
$environment->addExtension(new GithubFlavoredMarkdownExtension());
|
||||
|
||||
return $this->converter = new MarkdownConverter($environment);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user