diff --git a/src/BirdsiteLive.Common/Regexes/UserRegexes.cs b/src/BirdsiteLive.Common/Regexes/UserRegexes.cs
index c20a544..ab48a1f 100644
--- a/src/BirdsiteLive.Common/Regexes/UserRegexes.cs
+++ b/src/BirdsiteLive.Common/Regexes/UserRegexes.cs
@@ -5,6 +5,6 @@ namespace BirdsiteLive.Common.Regexes
public class UserRegexes
{
public static readonly Regex TwitterAccount = new Regex(@"^[a-zA-Z0-9_]+$");
- public static readonly Regex Mention = new Regex(@"(.?)@([a-zA-Z0-9_]+)(\s|$|[\[\]<>,;:!?/|-]|(. ))");
+ public static readonly Regex Mention = new Regex(@"(.?)@([a-zA-Z0-9_]+)(\s|$|[\[\]<>,;:'!?/|-]|(. ))");
}
}
\ No newline at end of file
diff --git a/src/BirdsiteLive.Domain/Tools/StatusExtractor.cs b/src/BirdsiteLive.Domain/Tools/StatusExtractor.cs
index 4e98baf..3fcb2e0 100644
--- a/src/BirdsiteLive.Domain/Tools/StatusExtractor.cs
+++ b/src/BirdsiteLive.Domain/Tools/StatusExtractor.cs
@@ -111,7 +111,7 @@ namespace BirdsiteLive.Domain.Tools
}
var url = $"https://{_instanceSettings.Domain}/users/{mention}";
- var name = $"@{mention}@{_instanceSettings.Domain}";
+ var name = $"@{mention}";
if (tags.All(x => x.href != url))
{
diff --git a/src/Tests/BirdsiteLive.Domain.Tests/Tools/StatusExtractorTests.cs b/src/Tests/BirdsiteLive.Domain.Tests/Tools/StatusExtractorTests.cs
index a86b56e..9717aab 100644
--- a/src/Tests/BirdsiteLive.Domain.Tests/Tools/StatusExtractorTests.cs
+++ b/src/Tests/BirdsiteLive.Domain.Tests/Tools/StatusExtractorTests.cs
@@ -356,7 +356,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
- Assert.AreEqual("@mynickname@domain.name", result.tags.First().name);
+ Assert.AreEqual("@mynickname", result.tags.First().name);
Assert.AreEqual("Mention", result.tags.First().type);
Assert.AreEqual("https://domain.name/users/mynickname", result.tags.First().href);
@@ -407,7 +407,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
- Assert.AreEqual("@mynickname@domain.name", result.tags.First().name);
+ Assert.AreEqual("@mynickname", result.tags.First().name);
Assert.AreEqual("Mention", result.tags.First().type);
Assert.AreEqual("https://domain.name/users/mynickname", result.tags.First().href);
@@ -433,7 +433,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
- Assert.AreEqual("@mynickname@domain.name", result.tags.First().name);
+ Assert.AreEqual("@mynickname", result.tags.First().name);
Assert.AreEqual("Mention", result.tags.First().type);
Assert.AreEqual("https://domain.name/users/mynickname", result.tags.First().href);
@@ -460,7 +460,33 @@ namespace BirdsiteLive.Domain.Tests.Tools
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
- Assert.AreEqual("@my___nickname@domain.name", result.tags.First().name);
+ Assert.AreEqual("@my___nickname", result.tags.First().name);
+ Assert.AreEqual("Mention", result.tags.First().type);
+ Assert.AreEqual("https://domain.name/users/my___nickname", result.tags.First().href);
+
+ Assert.IsTrue(result.content.Contains("Bla!"));
+ Assert.IsTrue(result.content.Contains(@"@my___nickname"));
+ #endregion
+ }
+
+ [TestMethod]
+ public void Extract_SingleMentionTag_SpecialChar_Test2()
+ {
+ #region Stubs
+ var message = $"Bla! @my___nickname's thing";
+ #endregion
+
+ #region Mocks
+ var logger = new Mock>();
+ #endregion
+
+ var service = new StatusExtractor(_settings, logger.Object);
+ var result = service.Extract(message);
+
+ #region Validations
+ logger.VerifyAll();
+ Assert.AreEqual(1, result.tags.Length);
+ Assert.AreEqual("@my___nickname", result.tags.First().name);
Assert.AreEqual("Mention", result.tags.First().type);
Assert.AreEqual("https://domain.name/users/my___nickname", result.tags.First().href);
@@ -486,7 +512,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
- Assert.AreEqual("@mynickname@domain.name", result.tags.First().name);
+ Assert.AreEqual("@mynickname", result.tags.First().name);
Assert.AreEqual("Mention", result.tags.First().type);
Assert.AreEqual("https://domain.name/users/mynickname", result.tags.First().href);