mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2026-02-14 07:43:31 -07:00
Use native method for enumerating runes
This commit is contained in:
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…
Reference in a new issue