diff --git a/src/js/easymde.js b/src/js/easymde.js index cece3b0..72f7254 100644 --- a/src/js/easymde.js +++ b/src/js/easymde.js @@ -848,6 +848,8 @@ function drawLink(editor) { if (!url) { return false; } + + if (/[()<>]/.test(url)) url = escapeUrl(url); } _replaceSelection(cm, stat.link, options.insertTexts.link, url); } @@ -865,10 +867,26 @@ function drawImage(editor) { if (!url) { return false; } + + if (/[()<>]/.test(url)) url = escapeUrl(url); } _replaceSelection(cm, stat.image, options.insertTexts.image, url); } +/** + * Escape URLs to prevent breaking up rendered Markdown links + * @param url {string} The url of the link or image + */ +function escapeUrl(url) { + + url = url.replace(/\(/g,'\\(') + .replace(/\)/g,'\\)') + .replace(//g,'\\>'); + + return url; +} + /** * Action for opening the browse-file window to upload an image to a server. * @param editor {EasyMDE} The EasyMDE object