URL encoding and escaping for JS prompt URLs

- URL encoding and escaping added for JS prompt entered URLs
- added option escapeURLs (boolean)
pull/393/head
Zignature 2 years ago
parent 5d0294f5f5
commit 33489ab616

@ -849,7 +849,10 @@ function drawLink(editor) {
return false;
}
if (/[()<>]/.test(url)) url = escapeUrl(url);
if (options.escapeURLs) {
url = encodeURI(url);
if (/[()]/.test(url)) url = escapeURI(url);
}
}
_replaceSelection(cm, stat.link, options.insertTexts.link, url);
}
@ -868,7 +871,10 @@ function drawImage(editor) {
return false;
}
if (/[()<>]/.test(url)) url = escapeUrl(url);
if (options.escapeURLs) {
url = encodeURI(url);
if (/[()]/.test(url)) url = escapeURI(url);
}
}
_replaceSelection(cm, stat.image, options.insertTexts.image, url);
}
@ -877,12 +883,8 @@ function drawImage(editor) {
* 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,'\\<')
.replace(/>/g,'\\>');
function escapeURI(url) {
url = url.replace(/\(/g,'\\(').replace(/\)/g,'\\)');
return url;
}

@ -197,6 +197,7 @@ declare namespace EasyMDE {
previewImagesInEditor?: boolean;
previewRender?: (markdownPlaintext: string, previewElement: HTMLElement) => string;
promptURLs?: boolean;
escapeURLs?: boolean;
renderingConfig?: RenderingOptions;
shortcuts?: Shortcuts;
showIcons?: ReadonlyArray<ToolbarButton>;

Loading…
Cancel
Save