Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/faker/utils/text.py: 39%
16 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1import re
2import unicodedata
4from typing import Pattern
6_re_pattern: Pattern = re.compile(r"[^\w\s-]", flags=re.U)
7_re_pattern_allow_dots: Pattern = re.compile(r"[^\.\w\s-]", flags=re.U)
8_re_spaces: Pattern = re.compile(r"[-\s]+", flags=re.U)
11def slugify(value: str, allow_dots: bool = False, allow_unicode: bool = False) -> str:
12 """
13 Converts to lowercase, removes non-word characters (alphanumerics and
14 underscores) and converts spaces to hyphens. Also strips leading and
15 trailing whitespace. Modified to optionally allow dots.
17 Adapted from Django 1.9
18 """
19 pattern: Pattern = _re_pattern_allow_dots if allow_dots else _re_pattern
21 value = str(value)
22 if allow_unicode:
23 value = unicodedata.normalize("NFKC", value)
24 value = pattern.sub("", value).strip().lower()
25 return _re_spaces.sub("-", value)
26 value = unicodedata.normalize("NFKD", value).encode("ascii", "ignore").decode("ascii")
27 value = pattern.sub("", value).strip().lower()
28 return _re_spaces.sub("-", value)