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

1import re 

2import unicodedata 

3 

4from typing import Pattern 

5 

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) 

9 

10 

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. 

16 

17 Adapted from Django 1.9 

18 """ 

19 pattern: Pattern = _re_pattern_allow_dots if allow_dots else _re_pattern 

20 

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)