mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-24 12:19:20 +00:00
Automatic markdown pasting should escape parentheses (#189357)
auto link with mismatched parens
This commit is contained in:
@@ -214,9 +214,9 @@ export function appendToLinkSnippet(
|
||||
if (pasteAsMarkdownLink) {
|
||||
snippet.appendText('[');
|
||||
snippet.appendPlaceholder(escapeBrackets(title) || 'Title', placeholderValue);
|
||||
snippet.appendText(isExternalLink ? `](${uriString})` : `](${escapeMarkdownLinkPath(mdPath)})`);
|
||||
snippet.appendText(`](${escapeMarkdownLinkPath(isExternalLink ? uriString : mdPath, isExternalLink)})`);
|
||||
} else {
|
||||
snippet.appendText(isExternalLink ? uriString : escapeMarkdownLinkPath(mdPath));
|
||||
snippet.appendText((escapeMarkdownLinkPath(isExternalLink ? uriString : mdPath, isExternalLink)));
|
||||
}
|
||||
return snippet;
|
||||
}
|
||||
@@ -268,9 +268,9 @@ export function createUriListSnippet(
|
||||
const placeholderText = escapeBrackets(title) || options?.placeholderText || 'Alt text';
|
||||
const placeholderIndex = typeof options?.placeholderStartIndex !== 'undefined' ? options?.placeholderStartIndex + i : (placeholderValue === 0 ? undefined : placeholderValue);
|
||||
snippet.appendPlaceholder(placeholderText, placeholderIndex);
|
||||
snippet.appendText(`](${escapeMarkdownLinkPath(mdPath)})`);
|
||||
snippet.appendText(`](${escapeMarkdownLinkPath(mdPath, isExternalLink)})`);
|
||||
} else {
|
||||
snippet.appendText(escapeMarkdownLinkPath(mdPath));
|
||||
snippet.appendText(escapeMarkdownLinkPath(mdPath, isExternalLink));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -397,12 +397,12 @@ function escapeHtmlAttribute(attr: string): string {
|
||||
return encodeURI(attr).replaceAll('"', '"');
|
||||
}
|
||||
|
||||
function escapeMarkdownLinkPath(mdPath: string): string {
|
||||
function escapeMarkdownLinkPath(mdPath: string, isExternalLink: boolean): string {
|
||||
if (needsBracketLink(mdPath)) {
|
||||
return '<' + mdPath.replaceAll('<', '\\<').replaceAll('>', '\\>') + '>';
|
||||
}
|
||||
|
||||
return encodeURI(mdPath);
|
||||
return isExternalLink ? mdPath : encodeURI(mdPath);
|
||||
}
|
||||
|
||||
function escapeBrackets(value: string): string {
|
||||
|
||||
@@ -102,6 +102,18 @@ suite('createEditAddingLinksForUriList', () => {
|
||||
});
|
||||
|
||||
suite('appendToLinkSnippet', () => {
|
||||
test('Should create auto link when pasted link has an mismatched parentheses', () => {
|
||||
const uriString = 'https://www.mic(rosoft.com';
|
||||
const snippet = appendToLinkSnippet(new vscode.SnippetString(''), false, 'https:/www.microsoft.com', '', uriString, 0, true);
|
||||
assert.strictEqual(snippet?.value, '<https://www.mic(rosoft.com>');
|
||||
});
|
||||
|
||||
test('Should create snippet with < > when pasted link has an mismatched parentheses', () => {
|
||||
const uriString = 'https://www.mic(rosoft.com';
|
||||
const snippet = appendToLinkSnippet(new vscode.SnippetString(''), true, 'https:/www.microsoft.com', 'abc', uriString, 0, true);
|
||||
assert.strictEqual(snippet?.value, '[${0:abc}](<https://www.mic(rosoft.com>)');
|
||||
});
|
||||
|
||||
test('Should not create Markdown link snippet when pasteAsMarkdownLink is false', () => {
|
||||
const uriString = 'https://www.microsoft.com';
|
||||
const snippet = appendToLinkSnippet(new vscode.SnippetString(''), false, 'https:/www.microsoft.com', '', uriString, 0, true);
|
||||
|
||||
Reference in New Issue
Block a user