Add support for localized emoji keywords

This commit is contained in:
2024-06-09 00:20:09 -04:00
parent 99744e7e8d
commit 92cdbe35bf
4 changed files with 225 additions and 64 deletions

View File

@@ -9,15 +9,21 @@ import Foundation
import EmojiKit
class CLDRAnnotationsXMLHandler: NSObject, XMLParserDelegate {
let locale: String
var currentElement = ""
var currentEmoji: Emoji?
var emojis = [Emoji]()
var currentEmojiValue = ""
init(locale: String) {
self.locale = locale
}
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
if elementName == "annotation" && attributeDict["type"] != "tts" {
if let cp = attributeDict["cp"] {
currentEmoji = Emoji(value: cp, keywords: [])
currentEmoji = Emoji(value: cp, localizedKeywords: [:])
currentEmojiValue = ""
}
}
@@ -33,8 +39,9 @@ class CLDRAnnotationsXMLHandler: NSObject, XMLParserDelegate {
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if elementName == "annotation" {
if let emoji = currentEmoji {
let values = currentEmojiValue.split(separator: "|").map { $0.trim() }
emojis.append(Emoji(value: emoji.value, keywords: values))
var localizedKeywords = [String: [String]]()
localizedKeywords[locale] = currentEmojiValue.split(separator: "|").map { $0.trim() }
emojis.append(Emoji(value: emoji.value, localizedKeywords: localizedKeywords))
}
}
currentElement = ""