From ccc41deb36cda6d22d512ff85a5ec26b896ea10e Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 2 Sep 2021 13:29:05 -0700 Subject: [PATCH] Retain whitespace in split for detecting urls --- bookwyrm/templatetags/utilities.py | 2 +- bookwyrm/tests/views/test_status.py | 23 ++++++++++++++++++++++- bookwyrm/views/status.py | 8 ++++---- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/bookwyrm/templatetags/utilities.py b/bookwyrm/templatetags/utilities.py index eeef26be4..c8ebd17d3 100644 --- a/bookwyrm/templatetags/utilities.py +++ b/bookwyrm/templatetags/utilities.py @@ -56,7 +56,7 @@ def truncatepath(value, arg): @register.simple_tag(takes_context=False) def get_book_cover_thumbnail(book, size="medium", ext="jpg"): """Returns a book thumbnail at the specified size and extension, - with fallback if needed""" + with fallback if needed""" if size == "": size = "medium" try: diff --git a/bookwyrm/tests/views/test_status.py b/bookwyrm/tests/views/test_status.py index ff429e20f..6c236b6d3 100644 --- a/bookwyrm/tests/views/test_status.py +++ b/bookwyrm/tests/views/test_status.py @@ -281,7 +281,7 @@ class StatusViews(TestCase): ("@nutria@%s" % DOMAIN, user), ) - def test_format_links(self, *_): + def test_format_links_simple_url(self, *_): """find and format urls into a tags""" url = "http://www.fish.com/" self.assertEqual( @@ -291,6 +291,27 @@ class StatusViews(TestCase): views.status.format_links("(%s)" % url), '(www.fish.com/)' % url, ) + + def test_format_links_paragraph_break(self, *_): + """find and format urls into a tags""" + url = """okay + +http://www.fish.com/""" + self.assertEqual( + views.status.format_links(url), + 'okay\n\nwww.fish.com/', + ) + + def test_format_links_parens(self, *_): + """find and format urls into a tags""" + url = "http://www.fish.com/" + self.assertEqual( + views.status.format_links("(%s)" % url), + '(www.fish.com/)' % url, + ) + + def test_format_links_special_chars(self, *_): + """find and format urls into a tags""" url = "https://archive.org/details/dli.granth.72113/page/n25/mode/2up" self.assertEqual( views.status.format_links(url), diff --git a/bookwyrm/views/status.py b/bookwyrm/views/status.py index b58e4941e..a864d4b75 100644 --- a/bookwyrm/views/status.py +++ b/bookwyrm/views/status.py @@ -155,9 +155,11 @@ def format_links(content): """detect and format links""" validator = URLValidator() formatted_content = "" - split_content = content.split(" ") + split_content = re.split(r"(\s+)", content) - for index, potential_link in enumerate(split_content): + for potential_link in split_content: + if not potential_link: + continue wrapped = _wrapped(potential_link) if wrapped: wrapper_close = potential_link[-1] @@ -182,8 +184,6 @@ def format_links(content): if wrapped: formatted_content += wrapper_close - if index < len(split_content) - 1: - formatted_content += " " return formatted_content