feat: display articles
Some checks failed
Deploy to SFTP Server / build (push) Failing after 1m38s

This commit is contained in:
Max Richter
2025-10-22 17:17:34 +02:00
parent 3a120e32fc
commit ae266dbdc5
10 changed files with 121 additions and 47 deletions

45
src/helpers/markdown.ts Normal file
View File

@@ -0,0 +1,45 @@
import MarkdownIt from "markdown-it";
const parser = new MarkdownIt();
export function readDuration(markdown: string): number | undefined {
const words = markdown.split(" ")?.filter(Boolean)?.length;
return words && Math.round(words / 250);
}
export function markdownToHtml(markdown: string): string {
const md = new MarkdownIt({
html: false, // set to true only if you trust the source
linkify: true,
typographer: true,
breaks: true,
});
// Convert -> sanitize
const unsafeHtml = md.render(markdown);
return unsafeHtml;
}
export function markdownToText(markdown: string): string {
if (!markdown) return "";
return parser
.render(markdown)
.split("\n")
.map((str) => str.trim())
.map((str) => {
return str.replace(/<\/?[^>]+(>|$)/g, "").split("\n");
})
.flat()
.filter((str) =>
!str.startsWith("import") &&
!str.startsWith("export") &&
!str.startsWith("#") &&
!str.startsWith("const") &&
!str.startsWith("function") &&
!str.startsWith("export") &&
!str.startsWith("import") &&
!str.startsWith("&lt;") &&
!str.startsWith("let") &&
str.length > 0
)
.join(" ");
}