Files
jfa-go/ts/modules/stripmd.ts
Harvey Tindall 817107622a ts: format finally
formatted with biome, a config file is provided.
2025-12-08 20:38:30 +00:00

41 lines
1.2 KiB
TypeScript

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));
}