diff --git a/libs/ContentTypes/Markdown/LinkRenderer.php b/libs/ContentTypes/Markdown/LinkRenderer.php
index af49138..d25bf74 100644
--- a/libs/ContentTypes/Markdown/LinkRenderer.php
+++ b/libs/ContentTypes/Markdown/LinkRenderer.php
@@ -58,6 +58,14 @@ class LinkRenderer extends \League\CommonMark\Inline\Renderer\LinkRenderer
throw new LinkNotFoundException("Could not locate file '$url'");
}
+ protected function isValidUrl($url) {
+ return !empty($url) && $url[0] != '#';
+ }
+
+ protected function isExternalUrl($url) {
+ return preg_match('|^(?:[a-z]+:)?//|', $url);
+ }
+
/**
* @param AbstractInline|Link $inline
* @param ElementRendererInterface $htmlRenderer
@@ -83,12 +91,12 @@ class LinkRenderer extends \League\CommonMark\Inline\Renderer\LinkRenderer
// empty urls and anchors should
// not go through the url resolver
- if (empty($url) || $url[0] == '#') {
+ if (!$this->isValidUrl($url)) {
return $element;
}
// Absolute urls, shouldn't either
- if (preg_match('|^(?:[a-z]+:)?//|', $url)) {
+ if ($this->isExternalUrl($url)) {
$element->setAttribute('class', 'external');
return $element;
}
diff --git a/libs/Format/Confluence/ContentTypes/Markdown/LinkRenderer.php b/libs/Format/Confluence/ContentTypes/Markdown/LinkRenderer.php
index e8896ef..41f0cac 100644
--- a/libs/Format/Confluence/ContentTypes/Markdown/LinkRenderer.php
+++ b/libs/Format/Confluence/ContentTypes/Markdown/LinkRenderer.php
@@ -8,7 +8,7 @@ use League\CommonMark\Inline\Element\Link;
class LinkRenderer extends \Todaymade\Daux\ContentTypes\Markdown\LinkRenderer
{
/**
- * @param Link $inline
+ * @param AbstractInline|Link $inline
* @param ElementRendererInterface $htmlRenderer
*
* @return HtmlElement
@@ -28,13 +28,17 @@ class LinkRenderer extends \Todaymade\Daux\ContentTypes\Markdown\LinkRenderer
// Default handling
$element = parent::render($inline, $htmlRenderer);
+
$url = $inline->getUrl();
- if (empty($url) || $url[0] != '!') {
+
+ // empty urls, anchors and absolute urls
+ // should not go through the url resolver
+ if (!$this->isValidUrl($url) || $this->isExternalUrl($url)) {
return $element;
}
//Internal links
- $file = $this->resolveInternalFile(ltrim($url, '!'));
+ $file = $this->resolveInternalFile($url);
$link_props = [
'ri:content-title' => trim($this->daux['confluence']['prefix']) . ' ' . $file->getTitle(),
diff --git a/tests/ContentTypes/Markdown/LinkRendererTest.php b/tests/ContentTypes/Markdown/LinkRendererTest.php
index 9941cfa..8c5fa3b 100644
--- a/tests/ContentTypes/Markdown/LinkRendererTest.php
+++ b/tests/ContentTypes/Markdown/LinkRendererTest.php
@@ -37,7 +37,7 @@ class LinkRendererTest extends \PHPUnit_Framework_TestCase
{
return [
// /Widgets/Page
- ['Link', '[Link](http://google.ch)', 'Widgets/Page.html'],
+ ['Link', '[Link](http://google.ch)', 'Widgets/Page.html'],
['Link', '[Link](#features)', 'Widgets/Page.html'],
['Link', '[Link](Button.md)', 'Widgets/Page.html'],
['Link', '[Link](./Button.md)', 'Widgets/Page.html'],