From bcc7995c52c3a63680ca1aefe9d10a011f971600 Mon Sep 17 00:00:00 2001 From: Jeroen De Dauw Date: Thu, 2 Dec 2021 14:45:39 +0100 Subject: [PATCH] Add support for extended syntax markdown Fixes https://github.com/ProfessionalWiki/ExternalContent/issues/15 --- README.md | 4 ++++ extension.json | 2 +- .../ContentRenderer/MarkdownRenderer.php | 3 ++- .../Domain/MarkdownRendererTest.php | 22 +++++++++++++++++-- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0bc383b..b19e749 100644 --- a/README.md +++ b/README.md @@ -200,6 +200,10 @@ Alternatively, you can execute commands from the MediaWiki root directory: ## Release notes +### Version 1.2.0 - 2021-12-02 + +* Added support for [extended syntax markdown](https://www.markdownguide.org/extended-syntax/) + ### Version 1.1.0 - 2021-11-01 * Added normalization for github.com URLs to the `#embed` parser function diff --git a/extension.json b/extension.json index d086d6b..e589774 100644 --- a/extension.json +++ b/extension.json @@ -1,6 +1,6 @@ { "name": "External Content", - "version": "1.1.0", + "version": "1.2.0", "license-name": "GPL-2.0-or-later", "author": [ diff --git a/src/Domain/ContentRenderer/MarkdownRenderer.php b/src/Domain/ContentRenderer/MarkdownRenderer.php index a3996a9..e65777a 100644 --- a/src/Domain/ContentRenderer/MarkdownRenderer.php +++ b/src/Domain/ContentRenderer/MarkdownRenderer.php @@ -5,6 +5,7 @@ namespace ProfessionalWiki\ExternalContent\Domain\ContentRenderer; use Michelf\Markdown; +use Michelf\MarkdownExtra; use ProfessionalWiki\ExternalContent\Domain\ContentRenderer; class MarkdownRenderer implements ContentRenderer { @@ -16,7 +17,7 @@ public function render( string $content, string $contentUrl ): string { } private function newMarkdownParser( string $contentUrl ): Markdown { - $parser = new Markdown(); + $parser = new MarkdownExtra(); $urlExpander = new UrlExpander(); $parser->url_filter_func = fn( string $url ) => $urlExpander->expand( $url, $contentUrl ); diff --git a/tests/Integration/Domain/MarkdownRendererTest.php b/tests/Integration/Domain/MarkdownRendererTest.php index d91228c..9223411 100644 --- a/tests/Integration/Domain/MarkdownRendererTest.php +++ b/tests/Integration/Domain/MarkdownRendererTest.php @@ -20,9 +20,9 @@ public function testRendersSimpleMarkdown(): void { } public function testPurifiesContent(): void { - $this->assertSame( + $this->assertRendersAs( '

I am


', - ( new MarkdownRenderer() )->render( 'I am

', '' ) + 'I am

' ); } @@ -50,4 +50,22 @@ public function linkProvider(): iterable { ]; } + public function testRendersFencedCodeBlock(): void { + $this->assertRendersAs( + '
Some codeMore code
', + "~~~\nSome code\nMore code\n~~~" + ); + } + + private function assertRendersAs( string $expectedHtml, string $markdown ): void { + $this->assertSame( + $expectedHtml, + preg_replace( + '/\n+/', // Replace newlines since they get inserted pretty randomly between HTML tags + '', + ( new MarkdownRenderer() )->render( $markdown, '' ) + ) + ); + } + }