Only escape characters as necessary in clean_content

Fixes #1885
This commit is contained in:
CapnS 2019-03-29 10:57:49 -05:00 committed by Rapptz
parent 1d701f32b6
commit 24d3a5a48d

View File

@ -473,16 +473,11 @@ class clean_content(Converter):
result = pattern.sub(repl, argument)
if self.escape_markdown:
transformations = {
re.escape(c): '\\' + c
for c in ('*', '`', '_', '~', '\\', '||')
}
def replace(obj):
return transformations.get(re.escape(obj.group(0)), '')
pattern = re.compile('|'.join(transformations.keys()))
result = pattern.sub(replace, result)
result = re.sub(r'\\', r'\\\\', result)
for c in ('*', '`', '_', '~', '|'):
regex = r'\{0}(?=([\s\S]*((?<!\{0})\{0})))'.format(c)
replace = '\{0}'.format(c)
result = re.sub(regex, replace, result)
# Completely ensure no mentions escape:
return re.sub(r'@(everyone|here|[!&]?[0-9]{17,21})', '@\u200b\\1', result)