Fix hashtagging of HTML entities

This commit is contained in:
Andrew Godwin 2022-11-28 22:34:14 -07:00
parent 4420507f62
commit fb342cfb54
2 changed files with 10 additions and 4 deletions

View File

@ -123,7 +123,7 @@ class Hashtag(StatorModel):
delete = "{edit}delete/"
timeline = "/tags/{self.hashtag}/"
hashtag_regex = re.compile(r"((?:\B#)([a-zA-Z0-9(_)]{1,}\b))")
hashtag_regex = re.compile(r"\B#([a-zA-Z0-9(_)]+\b)(?!;)")
def save(self, *args, **kwargs):
self.hashtag = self.hashtag.lstrip("#")
@ -182,7 +182,7 @@ class Hashtag(StatorModel):
@classmethod
def linkify_hashtags(cls, content) -> str:
def replacer(match):
hashtag = match.group()
return f'<a class="hashtag" href="/tags/{hashtag.lstrip("#").lower()}/">{hashtag}</a>'
hashtag = match.group(1)
return f'<a class="hashtag" href="/tags/{hashtag.lower()}/">#{hashtag}</a>'
return mark_safe(Hashtag.hashtag_regex.sub(replacer, content))

View File

@ -1,4 +1,4 @@
from core.html import html_to_plaintext
from core.html import html_to_plaintext, sanitize_post
def test_html_to_plaintext():
@ -13,3 +13,9 @@ def test_html_to_plaintext():
html_to_plaintext("<p>Hi!</p>\n\n<p>How are<br> you?</p><p>today</p>")
== "Hi!\n\nHow are\n you?\n\ntoday"
)
def test_sanitize_post():
assert sanitize_post("<p>Hello!</p>") == "<p>Hello!</p>"
assert sanitize_post("<p>It&#39;s great</p>") == "<p>It&#39;s great</p>"