From 961fae550fd1f06a928cffdd3a65e0e1eb989607 Mon Sep 17 00:00:00 2001 From: Alex Barnsley <8069294+alexbarnsley@users.noreply.github.com> Date: Thu, 7 Oct 2021 12:51:54 +0100 Subject: [PATCH 1/3] refactor: commonmark internal mailto link --- src/CommonMark/Extensions/Link/LinkRenderer.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/CommonMark/Extensions/Link/LinkRenderer.php b/src/CommonMark/Extensions/Link/LinkRenderer.php index 767454762..bf0081e3a 100644 --- a/src/CommonMark/Extensions/Link/LinkRenderer.php +++ b/src/CommonMark/Extensions/Link/LinkRenderer.php @@ -111,6 +111,11 @@ private function isInternalLink(string $url): bool return true; } + // Emails + if (str_starts_with($url, 'mailto:')) { + return true; + } + return false; } } From bd101e7e9e311d4588408ec87f820b2ad116e88a Mon Sep 17 00:00:00 2001 From: Alex Barnsley <8069294+alexbarnsley@users.noreply.github.com> Date: Thu, 7 Oct 2021 12:52:19 +0100 Subject: [PATCH 2/3] uncomment test & add assertions --- .../Extensions/Link/LinkRendererTest.php | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/tests/CommonMark/Extensions/Link/LinkRendererTest.php b/tests/CommonMark/Extensions/Link/LinkRendererTest.php index 214b64da9..2e15ac4ae 100644 --- a/tests/CommonMark/Extensions/Link/LinkRendererTest.php +++ b/tests/CommonMark/Extensions/Link/LinkRendererTest.php @@ -18,24 +18,31 @@ $environment = new Environment(); $environment->addRenderer(Text::class, new TextRenderer()); - assertMatchesSnapshot((string) $subject->render(new Link($url, 'Label', 'Title'), new HtmlRenderer($environment))); + $element = $subject->render(new Link($url, 'Label', 'Title'), new HtmlRenderer($environment)); + + $this->expect($element->getAttribute('target'))->not->toBe('_blank'); + assertMatchesSnapshot((string) $element); })->with([ 'https://ourapp.com', '#heading', '/path/segment', + 'mailto:test@ark.io', ]); -// it('should render external links', function (string $url) { -// $subject = new LinkRenderer(); -// $subject->setConfiguration(new Configuration()); +it('should render external links', function (string $url) { + $subject = new LinkRenderer(); + $subject->setConfiguration(new Configuration()); + + $environment = new Environment(); + $environment->addRenderer(Text::class, new TextRenderer()); -// $environment = new Environment(); -// $environment->addRenderer(Text::class, new TextRenderer()); + $element = $subject->render(new Link($url, 'Label', 'Title'), new HtmlRenderer($environment)); -// assertMatchesSnapshot((string) $subject->render(new Link($url, 'Label', 'Title'), new HtmlRenderer($environment))); -// })->with([ -// 'https://google.com', -// 'unsupported/relative/url', // is valid, but currently not supported -// 'ftp://google.com', -// '//google.com', -// ]); + $this->expect($element->getAttribute('target'))->toBe('_blank'); + assertMatchesSnapshot((string) $element); +})->with([ + 'https://google.com', + 'unsupported/relative/url', // is valid, but currently not supported + 'ftp://google.com', + '//google.com', +]); From fb1185804fe10eb2642192197ddf30810b824b90 Mon Sep 17 00:00:00 2001 From: Alex Barnsley <8069294+alexbarnsley@users.noreply.github.com> Date: Thu, 7 Oct 2021 12:52:25 +0100 Subject: [PATCH 3/3] add snapshot --- ...t_should_render_internal_links_with_(mailtotestark.io)__1.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 tests/__snapshots__/LinkRendererTest__it_should_render_internal_links_with_(mailtotestark.io)__1.txt diff --git a/tests/__snapshots__/LinkRendererTest__it_should_render_internal_links_with_(mailtotestark.io)__1.txt b/tests/__snapshots__/LinkRendererTest__it_should_render_internal_links_with_(mailtotestark.io)__1.txt new file mode 100644 index 000000000..d3431b7be --- /dev/null +++ b/tests/__snapshots__/LinkRendererTest__it_should_render_internal_links_with_(mailtotestark.io)__1.txt @@ -0,0 +1 @@ +Label \ No newline at end of file