From bfe36db626603a6766b858d7859e8408ad9d2a0f Mon Sep 17 00:00:00 2001 From: Alex Garrett-Smith Date: Fri, 5 Apr 2024 21:42:25 +0100 Subject: [PATCH] Fixed commonmark error when no language specified --- src/CommonMark/CodeBlockRenderer.php | 6 +++-- tests/CommonMark/CodeBlockRendererTest.php | 26 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/CommonMark/CodeBlockRenderer.php b/src/CommonMark/CodeBlockRenderer.php index 824cc43..7e23062 100644 --- a/src/CommonMark/CodeBlockRenderer.php +++ b/src/CommonMark/CodeBlockRenderer.php @@ -31,14 +31,16 @@ public function render(Node $node, ChildNodeRendererInterface $childRenderer) $this->highlighter->withGutter((int)$startAt); } - $parsed = $this->highlighter->parse($node->getLiteral(), $matches['language']); + $language = $matches['language'] ?? 'txt'; + + $parsed = $this->highlighter->parse($node->getLiteral(), $language); $theme = $this->highlighter->getTheme(); if ($theme instanceof WithPre) { return $theme->preBefore() . $parsed . $theme->preAfter(); } else { - return '
' . $parsed . '
'; + return '
' . $parsed . '
'; } } } diff --git a/tests/CommonMark/CodeBlockRendererTest.php b/tests/CommonMark/CodeBlockRendererTest.php index 4980089..fee5f81 100644 --- a/tests/CommonMark/CodeBlockRendererTest.php +++ b/tests/CommonMark/CodeBlockRendererTest.php @@ -82,6 +82,32 @@ public function test_commonmark_with_pre(): void
echo;
 
+TXT; + + $this->assertSame($expected, $markdown->convert($input)->getContent()); + } + + public function test_commonmark_with_no_language(): void + { + $environment = new Environment(); + + $environment + ->addExtension(new CommonMarkCoreExtension()) + ->addExtension(new FrontMatterExtension()) + ->addRenderer(FencedCode::class, new CodeBlockRenderer()); + + $markdown = new MarkdownConverter($environment); + + $input = <<<'TXT' +``` +echo; +``` +TXT; + + $expected = <<<'TXT' +
echo;
+
+ TXT; $this->assertSame($expected, $markdown->convert($input)->getContent());