// Reading-Time-Estimator. Englisch/Deutsch, ~200 WPM. // Tokenisiert auf Wortgrenzen, ignoriert Code/Markdown-Sonderzeichen. export function estimateReadingTime(text: string, locale: "de" | "en" = "de"): { minutes: number; words: number } { const stripped = text .replace(/```[\s\S]*?```/g, " ") // Code-Blöcke .replace(/`[^`]*`/g, " ") // Inline-Code .replace(/!\[[^\]]*\]\([^)]*\)/g, " ") // Bilder .replace(/\[([^\]]*)\]\([^)]*\)/g, "$1") // Markdown-Links: nur Text behalten .replace(/[#>*_~`]/g, " "); // Markdown-Steuerzeichen const words = stripped.split(/\s+/).filter(Boolean).length; // Deutsch spricht man etwas langsamer (~180 WPM), Englisch schneller (~220) const wpm = locale === "de" ? 180 : 220; const minutes = Math.max(1, Math.round(words / wpm)); return { minutes, words }; }