From 05805f72d63a6d6a2d7dc7fe14abd37c1317b11a Mon Sep 17 00:00:00 2001 From: Terry Yiu <963907+tyiu@users.noreply.github.com> Date: Mon, 17 Jun 2024 21:50:20 -0400 Subject: [PATCH] Add frequently used Apple emoji category and refactor emoji transformation logic --- Sources/EmojiKit/AppleEmojiCategory.swift | 39 ++++++++++++----------- Sources/EmojiKit/EmojiManager.swift | 14 ++++---- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/Sources/EmojiKit/AppleEmojiCategory.swift b/Sources/EmojiKit/AppleEmojiCategory.swift index 2823b34..61e52af 100644 --- a/Sources/EmojiKit/AppleEmojiCategory.swift +++ b/Sources/EmojiKit/AppleEmojiCategory.swift @@ -21,14 +21,15 @@ public class AppleEmojiCategory: Codable, Hashable { public enum Name: String, CaseIterable, Codable { - case flags = "flags" - case activity = "activity" - case objects = "objects" - case travelAndPlaces = "travelAndPlaces" - case symbols = "symbols" + case frequentlyUsed = "frequentlyUsed" + case smileysAndPeople = "smileysAndPeople" case animalsAndNature = "animalsAndNature" case foodAndDrink = "foodAndDrink" - case smileysAndPeople = "smileysAndPeople" + case activity = "activity" + case travelAndPlaces = "travelAndPlaces" + case objects = "objects" + case symbols = "symbols" + case flags = "flags" public static var orderedCases: [Name] { return allCases.sorted(by: { $0.order < $1.order }) @@ -36,22 +37,24 @@ public class AppleEmojiCategory: Codable, Hashable { public var order: Int { switch self { - case .flags: - return 8 - case .activity: - return 4 - case .objects: - return 6 - case .travelAndPlaces: - return 5 - case .symbols: - return 7 + case .frequentlyUsed: + return 0 + case .smileysAndPeople: + return 1 case .animalsAndNature: return 2 case .foodAndDrink: return 3 - case .smileysAndPeople: - return 1 + case .activity: + return 4 + case .travelAndPlaces: + return 5 + case .objects: + return 6 + case .symbols: + return 7 + case .flags: + return 8 } } diff --git a/Sources/EmojiKit/EmojiManager.swift b/Sources/EmojiKit/EmojiManager.swift index 64f6d09..30aaf9c 100644 --- a/Sources/EmojiKit/EmojiManager.swift +++ b/Sources/EmojiKit/EmojiManager.swift @@ -92,13 +92,7 @@ public enum EmojiManager { if isNeutralEmoji(for: $0.key) { supportedEmojis[$0.key] = $0.value } else if showAllVariations { - var unqualifiedNeutralEmoji = unqualifiedNeutralEmoji(for: $0.key) - - let unicodeScalars = unqualifiedNeutralEmoji.unicodeScalars.map { $0.value } - if let actualUnqualifiedNeutralScalar = emojiSpecialMapping[unicodeScalars], - let actualUnqualifiedNeutralEmoji = uint32ToEmoji(actualUnqualifiedNeutralScalar) { - unqualifiedNeutralEmoji = String(actualUnqualifiedNeutralEmoji) - } + let unqualifiedNeutralEmoji = unqualifiedNeutralEmoji(for: $0.key) if let variationsForEmoji = variations[unqualifiedNeutralEmoji] { variations[unqualifiedNeutralEmoji] = variationsForEmoji + [$0.value] @@ -166,6 +160,12 @@ public enum EmojiManager { } } + let unicodeScalars = unqualifiedEmoji.unicodeScalars.map { $0.value } + if let actualUnqualifiedNeutralScalar = emojiSpecialMapping[unicodeScalars], + let actualUnqualifiedNeutralEmoji = uint32ToEmoji(actualUnqualifiedNeutralScalar) { + return String(actualUnqualifiedNeutralEmoji) + } + return unqualifiedEmoji } }