← back to Nineoh Guide

packages/core/src/slug.ts

16 lines

/** Deterministic slug helpers shared by web routes + sitemap. */
export function slugify(s: string): string {
  return s
    .toLowerCase()
    .normalize("NFKD")
    .replace(/[̀-ͯ]/g, "") // strip accents
    .replace(/['’.]/g, "")
    .replace(/[^a-z0-9]+/g, "-")
    .replace(/^-+|-+$/g, "");
}

export const episodePath = (season: number, episode: number) =>
  `/episodes/${season}/${episode}`;

export const castPath = (name: string) => `/cast/${slugify(name)}`;