mirror of
https://github.com/zulip/zulip.git
synced 2025-10-25 17:14:02 +00:00
markdown-processor: Update insertion_index check for multiple classes.
Updates find_proper_insertion_index to check for the inline image classes as matching at least one of the classes in the element's attrib["class"] so that cases where an inline preview image has multiple classes, like YouTube video previews, will have the correct insertion index. Fixes #26186.
This commit is contained in:
committed by
Alex Vandiver
parent
233b486618
commit
d84fd73db4
@@ -1130,15 +1130,15 @@ class InlineInterestingLinkProcessor(markdown.treeprocessors.Treeprocessor):
|
||||
return insertion_index
|
||||
|
||||
uncle = grandparent[insertion_index]
|
||||
inline_image_classes = [
|
||||
inline_image_classes = {
|
||||
"message_inline_image",
|
||||
"message_inline_ref",
|
||||
"inline-preview-twitter",
|
||||
]
|
||||
}
|
||||
if (
|
||||
uncle.tag != "div"
|
||||
or "class" not in uncle.keys()
|
||||
or uncle.attrib["class"] not in inline_image_classes
|
||||
or not (set(uncle.attrib["class"].split()) & inline_image_classes)
|
||||
):
|
||||
return insertion_index
|
||||
|
||||
|
||||
@@ -933,6 +933,14 @@ class MarkdownTest(ZulipTestCase):
|
||||
f"""<p><a href="https://www.youtube.com/watch?v=0c46YHS3RY8">https://www.youtube.com/watch?v=0c46YHS3RY8</a></p>\n<div class="youtube-video message_inline_image"><a data-id="0c46YHS3RY8" href="https://www.youtube.com/watch?v=0c46YHS3RY8"><img src="{get_camo_url("https://i.ytimg.com/vi/0c46YHS3RY8/default.jpg")}"></a></div><p>Sample text</p>\n<p><a href="https://www.youtube.com/watch?v=lXFO2ULktEI">https://www.youtube.com/watch?v=lXFO2ULktEI</a></p>\n<div class="youtube-video message_inline_image"><a data-id="lXFO2ULktEI" href="https://www.youtube.com/watch?v=lXFO2ULktEI"><img src="{get_camo_url("https://i.ytimg.com/vi/lXFO2ULktEI/default.jpg")}"></a></div>""",
|
||||
)
|
||||
|
||||
# Test order of YouTube inline previews in same paragraph.
|
||||
msg = "https://www.youtube.com/watch?v=0c46YHS3RY8\nhttps://www.youtube.com/watch?v=lXFO2ULktEI"
|
||||
converted = markdown_convert_wrapper(msg)
|
||||
self.assertEqual(
|
||||
converted,
|
||||
f"""<p><a href="https://www.youtube.com/watch?v=0c46YHS3RY8">https://www.youtube.com/watch?v=0c46YHS3RY8</a><br>\n<a href="https://www.youtube.com/watch?v=lXFO2ULktEI">https://www.youtube.com/watch?v=lXFO2ULktEI</a></p>\n<div class="youtube-video message_inline_image"><a data-id="0c46YHS3RY8" href="https://www.youtube.com/watch?v=0c46YHS3RY8"><img src="{get_camo_url("https://i.ytimg.com/vi/0c46YHS3RY8/default.jpg")}"></a></div><div class="youtube-video message_inline_image"><a data-id="lXFO2ULktEI" href="https://www.youtube.com/watch?v=lXFO2ULktEI"><img src="{get_camo_url("https://i.ytimg.com/vi/lXFO2ULktEI/default.jpg")}"></a></div>""",
|
||||
)
|
||||
|
||||
def test_twitter_id_extraction(self) -> None:
|
||||
self.assertEqual(
|
||||
get_tweet_id("http://twitter.com/#!/VizzQuotes/status/409030735191097344"),
|
||||
|
||||
Reference in New Issue
Block a user