24 lines
775 B
Python
24 lines
775 B
Python
"""
|
|
utilitaires créole
|
|
"""
|
|
import unicodedata
|
|
from .i18n import _
|
|
|
|
|
|
def normalize_family(family_name: str,
|
|
check_name: bool=True,
|
|
allow_dot: bool=False) -> str:
|
|
"""replace space, accent, uppercase, ... by valid character
|
|
"""
|
|
family_name = family_name.replace('-', '_')
|
|
if not allow_dot:
|
|
family_name = family_name.replace('.', '_')
|
|
family_name = family_name.replace(' ', '_')
|
|
nfkd_form = unicodedata.normalize('NFKD', family_name)
|
|
family_name = ''.join([c for c in nfkd_form if not unicodedata.combining(c)])
|
|
family_name = family_name.lower()
|
|
if check_name and family_name == 'containers':
|
|
raise ValueError(_(f'"{family_name}" is a forbidden family name'))
|
|
return family_name
|
|
|