Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/mistune/util.py: 81%

26 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-03 06:10 +0000

1try: 

2 from urllib.parse import quote 

3 import html 

4except ImportError: 

5 from urllib import quote 

6 html = None 

7 

8 

9PUNCTUATION = r'''\\!"#$%&'()*+,./:;<=>?@\[\]^`{}|_~-''' 

10ESCAPE_TEXT = r'\\[' + PUNCTUATION + ']' 

11 

12 

13def escape(s, quote=True): 

14 s = s.replace("&", "&amp;") 

15 s = s.replace("<", "&lt;") 

16 s = s.replace(">", "&gt;") 

17 if quote: 

18 s = s.replace('"', "&quot;") 

19 return s 

20 

21 

22def escape_url(link): 

23 safe = ( 

24 ':/?#@' # gen-delims - '[]' (rfc3986) 

25 '!$&()*+,;=' # sub-delims - "'" (rfc3986) 

26 '%' # leave already-encoded octets alone 

27 ) 

28 

29 if html is None: 

30 return quote(link.encode('utf-8'), safe=safe) 

31 return html.escape(quote(html.unescape(link), safe=safe)) 

32 

33 

34def escape_html(s): 

35 if html is not None: 

36 return html.escape(html.unescape(s)).replace('&#x27;', "'") 

37 return escape(s) 

38 

39 

40def unikey(s): 

41 return ' '.join(s.split()).lower()