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
« 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
9PUNCTUATION = r'''\\!"#$%&'()*+,./:;<=>?@\[\]^`{}|_~-'''
10ESCAPE_TEXT = r'\\[' + PUNCTUATION + ']'
13def escape(s, quote=True):
14 s = s.replace("&", "&")
15 s = s.replace("<", "<")
16 s = s.replace(">", ">")
17 if quote:
18 s = s.replace('"', """)
19 return s
22def escape_url(link):
23 safe = (
24 ':/?#@' # gen-delims - '[]' (rfc3986)
25 '!$&()*+,;=' # sub-delims - "'" (rfc3986)
26 '%' # leave already-encoded octets alone
27 )
29 if html is None:
30 return quote(link.encode('utf-8'), safe=safe)
31 return html.escape(quote(html.unescape(link), safe=safe))
34def escape_html(s):
35 if html is not None:
36 return html.escape(html.unescape(s)).replace(''', "'")
37 return escape(s)
40def unikey(s):
41 return ' '.join(s.split()).lower()