Philipp Hörist pushed to branch master at gajim / gajim
Commits: c8f9bbdb by lovetox at 2022-06-19T23:51:31+02:00 fix: Styling: Parse text correctly which contains uris and addresses Use one combined regex for uris and addresses so we get no overlaps Fixes #10974 - - - - - be62995e by lovetox at 2022-06-20T00:20:29+02:00 fix: Styling: Improve uri regex Add more url delimiters - - - - - 03033dfa by lovetox at 2022-06-20T00:21:05+02:00 fix: Styling: Improve address regex Allow "-" in domain part - - - - - 6df045ce by lovetox at 2022-06-20T00:21:08+02:00 chore: Styling: Add more tests - - - - - 2 changed files: - gajim/common/styling.py - test/no_gui/test_styling.py Changes: ===================================== gajim/common/styling.py ===================================== @@ -43,11 +43,13 @@ BLOCK_NESTED_RX = re.compile(PRE_NESTED_RX + '|' + QUOTE_RX, re.S | re.M) UNQUOTE_RX = re.compile(r'^> |^>', re.M) -URI_RX = r'((?P<protocol>[\w-]+://?|www[.])[\S()<>]+?(?=[,]?(\s|\Z)+))' -URI_RX = re.compile(URI_RX) +URI_RX = r'(?P<uri>([\w-]+://|www[.])[\S()<>]+?(?=[,>]?(\s|\Z)+))' +ADDRESS_RX = r'(?P<address>\b((xmpp|mailto):)?[\w-]*@([\w-]*?\.)+[\w]+([\?].*?(?=([\s\),]|$)))?)' # noqa: E501 +URI_ADDRESS_RX = URI_RX + '|' + ADDRESS_RX -ADDRESS_RX = r'(\b(?P<protocol>(xmpp|mailto):)?[\w-]*@(\w*?\.)+[\w]+([\?].*?(?=([\s\),]|$)))?)' # noqa: E501 +URI_RX = re.compile(URI_RX) ADDRESS_RX = re.compile(ADDRESS_RX) +URI_ADDRESS_RX = re.compile(URI_ADDRESS_RX) EMOJI_RX = emoji_data.get_regex() EMOJI_RX = re.compile(EMOJI_RX) @@ -319,12 +321,8 @@ def make(match: Match[str], is_address: bool) -> BaseUri: offset_bytes, is_address) - for match in URI_RX.finditer(line): - uri = make(match, False) - uris.append(uri) - - for match in ADDRESS_RX.finditer(line): - uri = make(match, True) + for match in URI_ADDRESS_RX.finditer(line): + uri = make(match, bool(match.group('address'))) uris.append(uri) return uris ===================================== test/no_gui/test_styling.py ===================================== @@ -325,6 +325,8 @@ EMAILS = [ 'a...@asd.at', 'a...@asd.asd.at', + 'a...@asd.asd-asd.at', + 'asd-...@asd.asdasd.at', 'mailto:f...@bar.com.uk', ] @@ -339,6 +341,7 @@ URL_WITH_TEXT = [ ('see this http://use...@example.com/ link', 'http://use...@example.com/'), ('see this http://use...@example.com/, and ..', 'http://use...@example.com/'), + ('<http://use...@example.com/>', 'http://use...@example.com/'), ] XMPP_URIS = [ @@ -392,6 +395,5 @@ def test_xmpp_uris(self): self.assertTrue(text[start:end] == result) - if __name__ == "__main__": unittest.main() View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/9914c246090155bf1f8daba85424b3c64a690b93...6df045cef3b9fdfafdb38433e985efd61dff1e36 -- View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/9914c246090155bf1f8daba85424b3c64a690b93...6df045cef3b9fdfafdb38433e985efd61dff1e36 You're receiving this email because of your account on dev.gajim.org.
_______________________________________________ Commits mailing list Commits@gajim.org https://lists.gajim.org/cgi-bin/listinfo/commits