From 42d6eb6000174b2a043c3de4fce85388eda98076 Mon Sep 17 00:00:00 2001 From: Andrew Godwin Date: Sun, 19 Feb 2023 23:01:50 -0700 Subject: [PATCH] Preserve ellipsis class on links when re-rendering --- core/html.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/html.py b/core/html.py index cf85fbe..6f8cc2a 100644 --- a/core/html.py +++ b/core/html.py @@ -123,6 +123,7 @@ class FediverseHtmlParser(HTMLParser): if self._pending_a: href = self._pending_a["attrs"].get("href") content = self._pending_a["content"].strip() + has_ellipsis = "ellipsis" in self._pending_a["attrs"].get("class", "") # Is it a mention? if content.lower().lstrip("@") in self.mention_matches: self.html_output += self.create_mention(content) @@ -133,7 +134,11 @@ class FediverseHtmlParser(HTMLParser): self.text_output += content elif content: # Shorten the link if we need to - self.html_output += self.create_link(href, content) + self.html_output += self.create_link( + href, + content, + has_ellipsis=has_ellipsis, + ) self.text_output += href self._pending_a = None @@ -153,7 +158,7 @@ class FediverseHtmlParser(HTMLParser): self.html_output += self.linkify(self._data_buffer) self._data_buffer = "" - def create_link(self, href, content): + def create_link(self, href, content, has_ellipsis=False): """ Generates a link, doing optional shortening. @@ -162,7 +167,7 @@ class FediverseHtmlParser(HTMLParser): looks_like_link = bool(self.URL_REGEX.match(content)) if looks_like_link: content = content.split("://", 1)[1] - if looks_like_link and len(content) > 30: + if (looks_like_link and len(content) > 30) or has_ellipsis: return f'{html.escape(content[:30])}' else: return f'{html.escape(content)}'