/**
 * How the analysis hub's file names map onto community editions. Pure, so the
 * importer and its tests share one definition.
 *
 *   CK_DAILY_PRO_<datum>.html    -> PRO    (CK Daily Pro, the full version; since 07.10.2026)
 *   CK_DAILY_<datum>.html        -> PRO    (the same edition under its name until 06.10.2026)
 *   CK_DAILY_BASIS_<datum>.html  -> BASIS  (CK Daily Basis, beginner edition)
 *   CK_DAILY_KURZ_<datum>.html   -> not imported any more (replaced by Basis)
 */

export type Edition = 'PRO' | 'BASIS';

/** Current CK Daily documents, Pro and Basis. KURZ deliberately does not match. */
export const DAILY_FILE = /^CK_DAILY(_BASIS|_PRO)?_\d{4}-\d{2}-\d{2}\.html?$/i;

/** The retired short edition. Existing posts stay; the file is never imported again. */
export function isKurz(name: string): boolean {
  return /(^|[_-])KURZ([_-]|\.)/i.test(name);
}

/** Basis only for `CK_DAILY_BASIS_…`; everything else takes the channel's default. */
export function editionFromName(name: string, fallback: Edition = 'PRO'): Edition {
  return /^CK_DAILY_BASIS_/i.test(name) ? 'BASIS' : fallback;
}

/** `2026-10-06` out of a file name, or null. */
export function dateKey(name: string): string | null {
  return /(\d{4}-\d{2}-\d{2})/.exec(name)?.[1] ?? null;
}

/**
 * Cover images are named `CK_DAILY_PRO_TITELBILD_<d>.jpg` (until 06.10.2026
 * `CK_DAILY_TITELBILD_<d>.jpg`) and `CK_DAILY_BASIS_TITELBILD_<d>.jpg`.
 */
export function coverMatchesEdition(coverName: string, edition: Edition): boolean {
  const isBasisCover = /_BASIS_/i.test(coverName);
  return edition === 'BASIS' ? isBasisCover : !isBasisCover;
}
