Skip to content

Commit 5da4f65

Browse files
authored
fix: update commonmark to handle extensions (#5)
1 parent 1b13c92 commit 5da4f65

File tree

5 files changed

+26
-14
lines changed

5 files changed

+26
-14
lines changed

src/CommonMark/Extensions/Image/ContainerRenderer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
final class ContainerRenderer
1010
{
1111
/** @phpstan-ignore-next-line */
12-
public static function render($content, $title): HtmlElement
12+
public static function render($content, $title): \Stringable|string|null
1313
{
1414
/* @phpstan-ignore-next-line */
1515
if (empty($title)) {

src/CommonMark/Extensions/Image/ImageRenderer.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ final class ImageRenderer implements NodeRendererInterface, XmlNodeRendererInter
2121
*/
2222
protected ConfigurationInterface $config;
2323

24-
public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable
24+
public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable|string|null
2525
{
2626
Image::assertInstanceOf($node);
2727

@@ -34,7 +34,7 @@ public function render(Node $node, ChildNodeRendererInterface $childRenderer): \
3434
$attrs['src'] = $node->getUrl();
3535
}
3636

37-
$alt = $node->renderNodes($node->children());
37+
$alt = $childRenderer->renderNodes($node->children());
3838
$alt = \preg_replace('/\<[^>]*alt="([^"]*)"[^>]*\>/', '$1', $alt);
3939
$attrs['alt'] = \preg_replace('/\<[^>]*\>/', '', $alt);
4040

src/CommonMark/Extensions/Image/YouTubeRenderer.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ public static function render(MediaUrl $url): HtmlElement
1212
{
1313
$video = new HtmlElement('iframe', [
1414
'width' => '100%',
15-
'height' => 480,
15+
'height' => '480',
1616
'src' => 'https://www.youtube.com/embed/'.$url->getId(),
17-
'frameborder' => 0,
18-
'allowfullscreen' => 1,
17+
'frameborder' => '0',
18+
'allowfullscreen' => '1',
1919
// Noise
20-
'showinfo' => 0,
21-
'controls' => 0,
22-
'autoplay' => 0,
23-
'modestbranding' => 1,
24-
'autohide' => 1,
20+
'showinfo' => '0',
21+
'controls' => '0',
22+
'autoplay' => '0',
23+
'modestbranding' => '1',
24+
'autohide' => '1',
2525
]);
2626

2727
$container = new HtmlElement('div', ['class' => 'video-container']);

src/CommonMark/Extensions/Link/LinkRenderer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ final class LinkRenderer implements NodeRendererInterface, XmlNodeRendererInterf
2323
*/
2424
private ConfigurationInterface $config;
2525

26-
public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable
26+
public function render(Node $node, ChildNodeRendererInterface $childRenderer): \Stringable|string|null
2727
{
2828
Link::assertInstanceOf($node);
2929

src/Providers/CommonMarkServiceProvider.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@
4949
use League\CommonMark\Extension\CommonMark\Renderer\Inline\EmphasisRenderer;
5050
use League\CommonMark\Extension\CommonMark\Renderer\Inline\HtmlInlineRenderer;
5151
use League\CommonMark\Extension\CommonMark\Renderer\Inline\StrongRenderer;
52+
use League\CommonMark\Extension\ExternalLink\ExternalLinkExtension;
53+
use League\CommonMark\Extension\HeadingPermalink\HeadingPermalinkExtension;
54+
use League\CommonMark\MarkdownConverterInterface;
5255
use League\CommonMark\Node\Block\Document;
5356
use League\CommonMark\Node\Block\Paragraph;
5457
use League\CommonMark\Node\Inline\Newline;
@@ -137,7 +140,8 @@ private function registerViewFinder(): void
137140
private function registerCommonMarkEnvironment(): void
138141
{
139142
/** @var \League\CommonMark\Environment\Environment */
140-
$environment = $this->app->get('markdown.environment');
143+
$environment = app(MarkdownConverterInterface::class)->getEnvironment();
144+
141145
$environment->addRenderer(FencedCode::class, new FencedCodeRenderer());
142146

143147
$environment->addBlockStartParser(new BlockQuoteStartParser(), 70);
@@ -193,6 +197,9 @@ private function registerCommonMarkEnvironment(): void
193197
$environment->addRenderer($interface, resolve($implementation), 0);
194198
}
195199

200+
$environment->addExtension(new ExternalLinkExtension());
201+
$environment->addExtension(new HeadingPermalinkExtension());
202+
196203
$environment->mergeConfig([
197204
'external_link' => [
198205
'internal_hosts' => config('app.url'),
@@ -202,13 +209,18 @@ private function registerCommonMarkEnvironment(): void
202209
'noopener' => 'external',
203210
'noreferrer' => 'external',
204211
],
212+
213+
205214
'heading_permalink' => [
206215
'html_class' => 'heading-permalink',
207216
'id_prefix' => 'user-content',
208217
'insert' => 'before',
209218
'title' => 'Permalink',
210219
'symbol' => '#',
211-
'slug_normalizer' => new SlugNormalizer(),
220+
],
221+
222+
'slug_normalizer' => [
223+
'instance' => new SlugNormalizer(),
212224
],
213225
]);
214226
}

0 commit comments

Comments
 (0)