fix parenthesis messing up with regex

This commit is contained in:
Nicolas Constant 2021-01-13 02:03:51 -05:00
parent cb64e9747a
commit 3a249f2c14
No known key found for this signature in database
GPG key ID: 1E9F677FB01A5688
2 changed files with 20 additions and 2 deletions

View file

@ -44,6 +44,7 @@ namespace BirdsiteLive.Domain.Tools
// Replace return lines
messageContent = Regex.Replace(messageContent, @"\r\n\r\n?|\n\n", "</p><p> ");
messageContent = Regex.Replace(messageContent, @"\r\n?|\n", "<br/> ");
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}";

View file

@ -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 ( <span class=""h-card""><a href=""https://domain.name/@mynickname"" class=""u-url mention"">@<span>mynickname</span></a></span> test)"));
#endregion
}
}
}