renovate/lib/util/markdown.ts

18 lines
834 B
TypeScript

// Generic replacements/link-breakers
export function sanitizeMarkdown(markdown: string): string {
let res = markdown;
// Put a zero width space after every # followed by a digit
res = res.replace(/#(\d)/gi, '#​$1');
// Put a zero width space after every @ symbol to prevent unintended hyperlinking
res = res.replace(/@/g, '@​');
res = res.replace(/(`\[?@)​/g, '$1');
res = res.replace(/([a-z]@)​/gi, '$1');
res = res.replace(/\/compare\/@​/g, '/compare/@');
res = res.replace(/(\(https:\/\/[^)]*?)\.\.\.@​/g, '$1...@');
res = res.replace(/([\s(])#(\d+)([)\s]?)/g, '$1#​$2$3');
// convert escaped backticks back to `
const backTickRe = /`([^/]*?)`/g;
res = res.replace(backTickRe, '`$1`');
res = res.replace(/`#​(\d+)`/g, '`#$1`');
return res;
}