Clean unused stuffs in EmojiData

This commit is contained in:
Julien Richard 2022-10-23 13:33:45 +02:00
commit 0f7c4f3619

View file

@ -25,23 +25,8 @@ namespace Greenshot.Editor.Controls
public static class EmojiData public static class EmojiData
{ {
private static Task _init; private static Task _init;
public static IEnumerable<Emoji> AllEmoji
=> from g in AllGroups
from e in g.EmojiList
select e;
public static IList<Group> AllGroups { get; private set; } public static IList<Group> AllGroups { get; private set; }
public static IDictionary<string, Emoji> LookupByText { get; private set; }
= new Dictionary<string, Emoji>();
public static IDictionary<string, Emoji> LookupByName { get; private set; }
= new Dictionary<string, Emoji>();
public static Regex MatchOne { get; private set; }
public static HashSet<char> MatchStart { get; private set; }
= new HashSet<char>();
public static void Load() public static void Load()
{ {
_init ??= Task.Run(ParseEmojiList); _init ??= Task.Run(ParseEmojiList);
@ -86,9 +71,6 @@ namespace Greenshot.Editor.Controls
select e; select e;
} }
private static string m_match_one_string;
// FIXME: this could be read directly from emoji-test.txt.gz
private static List<string> SkinToneComponents = new List<string> private static List<string> SkinToneComponents = new List<string>
{ {
"🏻", // light skin tone "🏻", // light skin tone
@ -111,6 +93,7 @@ namespace Greenshot.Editor.Controls
private static void ParseEmojiList() private static void ParseEmojiList()
{ {
var lookup_by_name = new Dictionary<string, Emoji>();
var match_group = new Regex(@"^# group: (.*)"); var match_group = new Regex(@"^# group: (.*)");
var match_subgroup = new Regex(@"^# subgroup: (.*)"); var match_subgroup = new Regex(@"^# subgroup: (.*)");
var match_sequence = new Regex(@"^([0-9a-fA-F ]+[0-9a-fA-F]).*; *([-a-z]*) *# [^ ]* (E[0-9.]* )?(.*)"); var match_sequence = new Regex(@"^([0-9a-fA-F ]+[0-9a-fA-F]).*; *([-a-z]*) *# [^ ]* (E[0-9.]* )?(.*)");
@ -204,15 +187,13 @@ namespace Greenshot.Editor.Controls
Text = text, Text = text,
SubGroup = current_subgroup, SubGroup = current_subgroup,
}; };
// FIXME: this prevents LookupByText from working with the unqualified version
LookupByText[text] = emoji; lookup_by_name[ToColonSyntax(name)] = emoji;
LookupByName[ToColonSyntax(name)] = emoji;
MatchStart.Add(text[0]);
// Get the left part of the name and check whether were a variation of an existing // Get the left part of the name and check whether were a variation of an existing
// emoji. If so, append to that emoji. Otherwise, add to current subgroup. // emoji. If so, append to that emoji. Otherwise, add to current subgroup.
// FIXME: does not work properly because variations can appear before the generic emoji // FIXME: does not work properly because variations can appear before the generic emoji
if (name.Contains(":") && LookupByName.TryGetValue(ToColonSyntax(name.Split(':')[0]), out var parent_emoji)) if (name.Contains(":") && lookup_by_name.TryGetValue(ToColonSyntax(name.Split(':')[0]), out var parent_emoji))
{ {
if (parent_emoji.VariationList.Count == 0) if (parent_emoji.VariationList.Count == 0)
parent_emoji.VariationList.Add(parent_emoji); parent_emoji.VariationList.Add(parent_emoji);
@ -226,17 +207,6 @@ namespace Greenshot.Editor.Controls
// Remove the Component group. Not sure we want to have the skin tones in the picker. // Remove the Component group. Not sure we want to have the skin tones in the picker.
list.RemoveAll(g => g.Name == "Component"); list.RemoveAll(g => g.Name == "Component");
AllGroups = list; AllGroups = list;
// Make U+fe0f optional in the regex so that we can match any combination.
// FIXME: this is the starting point to implement variation selectors.
var sortedtext = alltext.OrderByDescending(x => x.Length);
var match_other = string.Join("|", sortedtext)
.Replace("*", "[*]")
.Replace("\ufe0f", "\ufe0f?");
// Build a regex that matches any Emoji
m_match_one_string = match_family.ToString() + "|" + match_other;
MatchOne = new Regex("(" + m_match_one_string + ")");
} }
private static IEnumerable<string> EmojiDescriptionLines() private static IEnumerable<string> EmojiDescriptionLines()
@ -284,4 +254,3 @@ namespace Greenshot.Editor.Controls
private bool m_has_more; private bool m_has_more;
} }
} }