package pdf

import (
	"regexp"
	"strings"
	"unicode"

	"golang.org/x/text/unicode/norm"
)

// SanitizeFilename transforme une chaîne Unicode en nom de fichier sûr :
// - supprime les accents (Clément → Clement)
// - remplace les espaces par des tirets
// - supprime les caractères interdits (Windows / Unix)
// - évite les noms vides
func SanitizeFilename(input string) string {
	if input == "" {
		return "inconnu"
	}

	// 1) Normalisation Unicode (NFD) pour séparer lettres + accents
	t := norm.NFD.String(input)

	// 2) Suppression des marques diacritiques (accents)
	sb := strings.Builder{}
	for _, r := range t {
		if unicode.Is(unicode.Mn, r) {
			continue
		}
		sb.WriteRune(r)
	}
	out := sb.String()

	// 3) Remplacements simples
	out = strings.ReplaceAll(out, " ", "-")
	out = strings.ReplaceAll(out, "_", "-")

	// 4) Suppression des caractères interdits dans les noms de fichiers
	// Windows + Unix
	re := regexp.MustCompile(`[<>:"/\\|?*\x00-\x1F]`)
	out = re.ReplaceAllString(out, "")

	// 5) Nettoyage final
	out = strings.Trim(out, "-.")
	if out == "" {
		return "inconnu"
	}

	return out
}
