const removeMd = require("remove-markdown"); function stripAltText(md: string): string { let altStart = -1; // Start of alt text (between '[' & ']') let urlStart = -1; // Start of url (between '(' & ')') let urlEnd = -1; let prevURLEnd = -2; let out = ""; for (let i = 0; i < md.length; i++) { if (altStart != -1 && urlStart != -1 && md.charAt(i) == ")") { urlEnd = i - 1; out += md.substring(prevURLEnd + 2, altStart - 1) + md.substring(urlStart, urlEnd + 1); prevURLEnd = urlEnd; altStart = -1; urlStart = -1; urlEnd = -1; continue; } if (md.charAt(i) == "[" && altStart == -1) { altStart = i + 1; if (i > 0 && md.charAt(i - 1) == "!") { altStart--; } } if (i > 0 && md.charAt(i - 1) == "]" && md.charAt(i) == "(" && urlStart == -1) { urlStart = i + 1; } } if (prevURLEnd + 1 != md.length - 1) { out += md.substring(prevURLEnd + 2); } if (out == "") { return md; } return out; } export function stripMarkdown(md: string): string { return removeMd(stripAltText(md)); }