From 3a249f2c145d7dd3c6d345caee62931de579cef4 Mon Sep 17 00:00:00 2001
From: Nicolas Constant
");
messageContent = Regex.Replace(messageContent, @"\r\n?|\n", "
");
+ messageContent = Regex.Replace(messageContent, @"\(", "( ");
// Secure emojis
var emojiMatch = _emojiRegex.Matches(messageContent);
@@ -83,7 +84,7 @@ namespace BirdsiteLive.Domain.Tools
// Extract Hashtags
var hashtagMatch = OrderByLength(_hastagRegex.Matches(messageContent));
- foreach (Match m in hashtagMatch)
+ foreach (Match m in hashtagMatch.OrderByDescending(x => x.Length))
{
var tag = m.ToString().Replace("#", string.Empty).Replace("\n", string.Empty).Trim();
var url = $"https://{_instanceSettings.Domain}/tags/{tag}";
@@ -101,7 +102,7 @@ namespace BirdsiteLive.Domain.Tools
// Extract Mentions
var mentionMatch = OrderByLength(_mentionRegex.Matches(messageContent));
- foreach (Match m in mentionMatch)
+ foreach (Match m in mentionMatch.OrderByDescending(x => x.Length))
{
var mention = m.ToString().Replace("@", string.Empty).Replace("\n", string.Empty).Trim();
var url = $"https://{_instanceSettings.Domain}/users/{mention}";
diff --git a/src/Tests/BirdsiteLive.Domain.Tests/Tools/StatusExtractorTests.cs b/src/Tests/BirdsiteLive.Domain.Tests/Tools/StatusExtractorTests.cs
index 3edf9c8..32d1faa 100644
--- a/src/Tests/BirdsiteLive.Domain.Tests/Tools/StatusExtractorTests.cs
+++ b/src/Tests/BirdsiteLive.Domain.Tests/Tools/StatusExtractorTests.cs
@@ -335,5 +335,22 @@ namespace BirdsiteLive.Domain.Tests.Tools
Assert.IsTrue(result.content.Contains(@"😎 😍 🤗 🤩 😘"));
#endregion
}
+
+ [TestMethod]
+ public void Extract_Parenthesis_Test()
+ {
+ #region Stubs
+ var message = $"bla (@mynickname test)";
+ //var message = $"tests@mynickname";
+ #endregion
+
+ var service = new StatusExtractor(_settings);
+ var result = service.ExtractTags(message);
+
+ #region Validations
+ Assert.AreEqual(1, result.tags.Length);
+ Assert.IsTrue(result.content.Equals(@"bla ( @mynickname test)"));
+ #endregion
+ }
}
}
\ No newline at end of file