Files
InkFlow/backend/inkflow/util.py

23 lines
747 B
Python

"""Petits utilitaires partages (slug, noms de fichiers surs)."""
from __future__ import annotations
import re
import unicodedata
_SLUG_STRIP = re.compile(r"[^a-z0-9]+")
_FS_UNSAFE = re.compile(r'[<>:"/\\|?*\x00-\x1f]')
def slugify(text: str) -> str:
"""Slug ascii minuscule, utilise pour les identifiants de dossiers internes."""
norm = unicodedata.normalize("NFKD", text)
norm = norm.encode("ascii", "ignore").decode("ascii").lower()
return _SLUG_STRIP.sub("-", norm).strip("-") or "livre"
def safe_filename(name: str) -> str:
"""Nettoie un nom de fichier en conservant les accents (sortie utilisateur)."""
name = _FS_UNSAFE.sub("", name).strip()
name = re.sub(r"\s+", " ", name)
return name or "sans-titre"