Use native method for enumerating runes

pull/1180/head
Tyrrrz 9 months ago
parent c16e14e9b6
commit 0745d49f44

@ -1,7 +1,6 @@
using System; using System;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using DiscordChatExporter.Core.Utils.Extensions;
namespace DiscordChatExporter.Core.Discord.Data.Common; namespace DiscordChatExporter.Core.Discord.Data.Common;
@ -11,7 +10,7 @@ public static class ImageCdn
// Standard emoji are rendered through Twemoji // Standard emoji are rendered through Twemoji
public static string GetStandardEmojiUrl(string emojiName) public static string GetStandardEmojiUrl(string emojiName)
{ {
var runes = emojiName.GetRunes().ToArray(); var runes = emojiName.EnumerateRunes().ToArray();
// Variant selector rune is skipped in Twemoji IDs, // Variant selector rune is skipped in Twemoji IDs,
// except when the emoji also contains a zero-width joiner. // except when the emoji also contains a zero-width joiner.

@ -1,5 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Text; using System.Text;
namespace DiscordChatExporter.Core.Utils.Extensions; namespace DiscordChatExporter.Core.Utils.Extensions;
@ -27,16 +26,6 @@ public static class StringExtensions
return builder.ToString(); return builder.ToString();
} }
public static IEnumerable<Rune> GetRunes(this string str)
{
var lastIndex = 0;
while (lastIndex < str.Length && Rune.TryGetRuneAt(str, lastIndex, out var rune))
{
yield return rune;
lastIndex += rune.Utf16SequenceLength;
}
}
public static T? ParseEnumOrNull<T>(this string str, bool ignoreCase = true) public static T? ParseEnumOrNull<T>(this string str, bool ignoreCase = true)
where T : struct, Enum => Enum.TryParse<T>(str, ignoreCase, out var result) ? result : null; where T : struct, Enum => Enum.TryParse<T>(str, ignoreCase, out var result) ? result : null;

Loading…
Cancel
Save