From d1dddb1096ef298c34fe2ca5f000eaf110175b06 Mon Sep 17 00:00:00 2001
From: Grollicus <cccvgitlab.db5c7b60@grollmann.eu>
Date: Wed, 25 Dec 2024 23:27:44 +0100
Subject: [PATCH] ignore mastodon / matrix handles

---
 src/core/markdown.py       | 2 +-
 src/core/tests/markdown.py | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/core/markdown.py b/src/core/markdown.py
index 16bd05b29..95246a86f 100644
--- a/src/core/markdown.py
+++ b/src/core/markdown.py
@@ -35,7 +35,7 @@ class PageLink(SpanToken):
 
 
 class ProfileLink(SpanToken):
-    pattern = re.compile(r'(?<!\S)@([-a-zA-Z0-9_]+)')
+    pattern = re.compile(r'(?<!\S)@([-a-zA-Z0-9_]+)(?=\s|$)')
     parse_inner = False
 
     def __init__(self, match):
diff --git a/src/core/tests/markdown.py b/src/core/tests/markdown.py
index 0ab5b990e..de008cd8a 100644
--- a/src/core/tests/markdown.py
+++ b/src/core/tests/markdown.py
@@ -90,6 +90,10 @@ class MarkdownTest(TestCase):
         self.assertEqual(render_markdown(conf, '@nonexisting_user'), '<p><a href="/en/user/nonexisting_user/" class="internal">@nonexisting_user</a></p>\n')
         self.assertEqual(render_markdown(conf, 'foo@bar'), '<p>foo@bar</p>\n')
         self.assertEqual(render_markdown(conf, '@"'), '<p>@"</p>\n')
+        # ignores element handles
+        self.assertEqual(render_markdown(conf, '@foo:bar.org'), '<p>@foo:bar.org</p>\n')
+        # ignores mastodon handles
+        self.assertEqual(render_markdown(conf, '@test@chaos.social'), '<p>@test@chaos.social</p>\n')
 
         self.assertEqual(render_markdown_ex(conf, '@existing_user').linked_user_slugs, {'existing_user'})
         self.assertEqual(render_markdown_ex(conf, '@nonexisting_user').linked_user_slugs, {'nonexisting_user'})
-- 
GitLab