From 44a1bcfd57d5d8307451a8f9636e9b6c9a5e80c2 Mon Sep 17 00:00:00 2001 From: Sorunome Date: Wed, 20 Jan 2021 12:02:40 +0100 Subject: [PATCH] fix: Accidental pills in URLs --- lib/src/utils/markdown.dart | 5 +++++ test/markdown_test.dart | 2 ++ 2 files changed, 7 insertions(+) diff --git a/lib/src/utils/markdown.dart b/lib/src/utils/markdown.dart index ac0f49e5..df55eabf 100644 --- a/lib/src/utils/markdown.dart +++ b/lib/src/utils/markdown.dart @@ -153,6 +153,11 @@ class PillSyntax extends InlineSyntax { @override bool onMatch(InlineParser parser, Match match) { + if (match.start > 0 && + !RegExp(r'[\s.!?:;\(]').hasMatch(match.input[match.start - 1])) { + parser.addNode(Text(match[0])); + return true; + } final identifier = match[1]; final element = Element.text('a', identifier); element.attributes['href'] = 'https://matrix.to/#/${identifier}'; diff --git a/test/markdown_test.dart b/test/markdown_test.dart index b2aecff1..d387e4fc 100644 --- a/test/markdown_test.dart +++ b/test/markdown_test.dart @@ -69,6 +69,8 @@ void main() { '#fox:sorunome.de: you all are awesome'); expect(markdown('!blah:example.org'), '!blah:example.org'); + expect(markdown('https://matrix.to/#/#fox:sorunome.de'), + 'https://matrix.to/#/#fox:sorunome.de'); }); test('latex', () { expect(markdown('meep \$\\frac{2}{3}\$'),