From b69b3af24ee23d87e8a45b8bd1aceb0609317f31 Mon Sep 17 00:00:00 2001 From: Emma De Silva Date: Mon, 17 Aug 2026 21:09:37 +0200 Subject: [PATCH] Fix Markdown heading conversion --- .../Actions/ConvertsMarkdownToPlainText.php | 2 +- .../ConvertsMarkdownToPlainTextTest.php | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/framework/src/Framework/Actions/ConvertsMarkdownToPlainText.php b/packages/framework/src/Framework/Actions/ConvertsMarkdownToPlainText.php index 8b9b2229cdb..a5a806f4420 100644 --- a/packages/framework/src/Framework/Actions/ConvertsMarkdownToPlainText.php +++ b/packages/framework/src/Framework/Actions/ConvertsMarkdownToPlainText.php @@ -22,7 +22,7 @@ */ class ConvertsMarkdownToPlainText { - protected const ATX_HEADERS = ['/^(\n)?\s{0,}#{1,6}\s+| {0,}(\n)?\s{0,}#{0,} {0,}(\n)?\s{0,}$/m' => '$1$2$3']; + protected const ATX_HEADERS = ['/^[ \t]*#{1,6}[ \t]+|[ \t]+#{1,6}[ \t]*$/m' => '']; protected const SETEXT_HEADERS = ['/\n={2,}/' => "\n"]; protected const HORIZONTAL_RULES = ['/^(-\s*?|\*\s*?|_\s*?){3,}\s*/m' => '']; protected const HTML_TAGS = ['/<[^>]*>/' => '']; diff --git a/packages/framework/tests/Feature/Actions/ConvertsMarkdownToPlainTextTest.php b/packages/framework/tests/Feature/Actions/ConvertsMarkdownToPlainTextTest.php index fd725fc3e4f..985991080bf 100644 --- a/packages/framework/tests/Feature/Actions/ConvertsMarkdownToPlainTextTest.php +++ b/packages/framework/tests/Feature/Actions/ConvertsMarkdownToPlainTextTest.php @@ -33,6 +33,24 @@ public function testItRemovesHeadings() $this->assertSame($text, $this->convert($markdown)); } + public function testItRemovesHeadingsFromLongMarkdownDocuments() + { + $markdown = <<<'MD' + # Customizing Your Site + + ## Introduction + + | Collection Type | Facade Method | Returned Object Type | File Extension | + |---------------------------------------|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------| + MD; + + $text = $this->convert($markdown); + + $this->assertStringContainsString("Customizing Your Site\n\nIntroduction", $text); + $this->assertStringNotContainsString('# Customizing Your Site', $text); + $this->assertStringContainsString('Collection Type', $text); + } + public function testItRemovesHeadingsAlternateSyntax() { $markdown = <<<'MD' @@ -509,7 +527,7 @@ public function testWithEmptyString() public function testWithOnlyEmptyLines() { - $this->assertSame("\n", $this->convert("\n\n\n")); + $this->assertSame("\n\n", $this->convert("\n\n\n")); } protected function convert(string $markdown): string