From 2d0fc8356f2611117b3c65a1c04a527672054089 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Fri, 5 Jul 2019 20:29:32 +0200 Subject: [PATCH] Fix markdown parsing for pre blocks and entity after entity --- telethon/extensions/markdown.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/telethon/extensions/markdown.py b/telethon/extensions/markdown.py index 2bbf4121..2284a283 100644 --- a/telethon/extensions/markdown.py +++ b/telethon/extensions/markdown.py @@ -53,8 +53,11 @@ def parse(message, delimiters=None, url_re=None): return message, [] delimiters = DEFAULT_DELIMITERS - # Build a regex to efficiently test all delimiters at once - delim_re = re.compile('|'.join('({})'.format(re.escape(k)) for k in delimiters)) + # Build a regex to efficiently test all delimiters at once. + # Note that the largest delimiter should go first, we don't + # want ``` to be interpreted as a single back-tick in a code block. + delim_re = re.compile('|'.join('({})'.format(re.escape(k)) + for k in sorted(delimiters, key=len, reverse=True))) # Cannot use a for loop because we need to skip some indices i = 0 @@ -98,7 +101,7 @@ def parse(message, delimiters=None, url_re=None): # No nested entities inside code blocks if ent in (MessageEntityCode, MessageEntityPre): - i = end + i = end - len(delim) continue