import MarkdownIt from "markdown-it";
const parser = new MarkdownIt();

export function readDuration(markdown: string): number | undefined {
  if (!markdown) return;
  const words = markdown.split(" ")?.filter(Boolean)?.length;
  if (!words) return;
  return words && Math.round(words / 250);
}

export function markdownToHtml(markdown: string): string {
  if (!markdown) return "";
  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(" ");
}
