diff --git a/src/core/markdown.py b/src/core/markdown.py index 16bd05b296143a0685ccbd1a4fdd70526bf72e27..95246a86fbfc492844a74c759c3ebdd1b1c4ebb3 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 0ab5b990e0ca4172ed7c90e3eb65d1fd24645e7d..de008cd8a96d7a1172c716c8b6328b276a1fec65 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'})