Path: blob/main/extensions/markdown-language-features/src/languageFeatures/copyFiles/snippets.ts
3294 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45/**6* Resolves variables in a VS Code snippet style string7*/8export function resolveSnippet(snippetString: string, vars: ReadonlyMap<string, string>): string {9return snippetString.replaceAll(/(?<escape>\\\$)|(?<!\\)\$\{(?<name>\w+)(?:\/(?<pattern>(?:\\\/|[^\}])+?)\/(?<replacement>(?:\\\/|[^\}])+?)\/)?\}/g, (match, _escape, name, pattern, replacement, _offset, _str, groups) => {10if (groups?.['escape']) {11return '$';12}1314const entry = vars.get(name);15if (typeof entry !== 'string') {16return match;17}1819if (pattern && replacement) {20return entry.replace(new RegExp(replaceTransformEscapes(pattern)), replaceTransformEscapes(replacement));21}2223return entry;24});25}262728function replaceTransformEscapes(str: string): string {29return str.replaceAll(/\\\//g, '/');30}31323334