diff --git a/dev/pyRevitLabs/pyRevitLabs.Emojis.Tests/pyRevitLabs.Emojis.Tests.cs b/dev/pyRevitLabs/pyRevitLabs.Emojis.Tests/pyRevitLabs.Emojis.Tests.cs new file mode 100644 index 000000000..972b2df3c --- /dev/null +++ b/dev/pyRevitLabs/pyRevitLabs.Emojis.Tests/pyRevitLabs.Emojis.Tests.cs @@ -0,0 +1,25 @@ +using System; +using System.Text.RegularExpressions; +using NUnit.Framework; +using pyRevitLabs.Emojis; + +namespace pyRevitLabs.Emojis.Tests +{ + public class Tests + { + [SetUp] + public void Setup() + { + } + + [Test] + public void TestRepeatedEmojis() + { + var input = ":cross_mark: :cross_mark:"; + var rendered = Emojis.Emojize(input); + var regex = new Regex(" + + + net48 + + false + true + + + + + + + + + + + + + + diff --git a/dev/pyRevitLabs/pyRevitLabs.Emojis/Emojis.cs b/dev/pyRevitLabs/pyRevitLabs.Emojis/Emojis.cs index 7dc5622a2..9234b4efc 100644 --- a/dev/pyRevitLabs/pyRevitLabs.Emojis/Emojis.cs +++ b/dev/pyRevitLabs/pyRevitLabs.Emojis/Emojis.cs @@ -2,6 +2,7 @@ using System.IO; using System.IO.Compression; using System.Drawing; +using System.Linq; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Reflection; @@ -2645,10 +2646,12 @@ public static string Emojize(string input) { if (_emojiZip is null) ExtractEmojis(); - var matches = new Regex(@"\:(?[^\s]+?)\:").Matches(input); + var matches = new Regex(@"\:(?[^\s]+?)\:").Matches(input) + .Cast() + .Select(m => m.Groups["code"].Value) + .Distinct(); // find the emoji shorthands - foreach (Match match in matches) { - var emojiShortCode = match.Groups["code"].Value; + foreach (var emojiShortCode in matches) { if (EmojiDict.ContainsKey(emojiShortCode)) { // find the emoji unicode var shortHand = string.Format(":{0}:", emojiShortCode);