From 28f7bfb1e73aaf9f5788eb32c447e89ba17bd357 Mon Sep 17 00:00:00 2001 From: Jono Wenger <jono@elixxir.io> Date: Wed, 25 Jan 2023 12:29:56 -0800 Subject: [PATCH] Copy EmojiMartData interface emoji-mart directly to emojiMartSet --- emoji/emojiMart.go | 35 +++++++++++++++++++++++------------ emoji/emojiMart_test.go | 5 +++-- emoji/emojiSet.go | 2 +- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/emoji/emojiMart.go b/emoji/emojiMart.go index 47e3ee0f..74c84172 100644 --- a/emoji/emojiMart.go +++ b/emoji/emojiMart.go @@ -19,36 +19,47 @@ type emojiID string type codepoint string // emojiMartSet is a representation of the JSON file format containing the emoji -// list in emoji-mart. +// list in emoji-mart. It matches the object EmojiMartData: +// https://github.com/missive/emoji-mart/blob/main/packages/emoji-mart-data/index.d.ts // // Doc: https://github.com/missive/emoji-mart/ // JSON example: https://github.com/missive/emoji-mart/blob/main/packages/emoji-mart-data/sets/14/native.json type emojiMartSet struct { - Categories []category `json:"categories"` - Emojis map[emojiID]emoji `json:"emojis"` - Aliases map[string]emojiID `json:"aliases"` - Sheet map[string]interface{} `json:"sheet"` + Categories []category `json:"categories"` + Emojis map[emojiID]emoji `json:"emojis"` + Aliases map[string]emojiID `json:"aliases"` + Sheet sheet `json:"sheet"` } -// category adheres to the category field of the emoji-mart JSON file. +// category adheres to the categories field within the EmojiMartData Javascript +// interface. type category struct { - Emojis []emojiID `json:"emojis"` ID string `json:"id"` + Emojis []emojiID `json:"emojis"` } -// emoji adheres to the emoji field of the emoji-mart JSON file. +// emoji adheres to the emojis field within the EmojiMartData Javascript +// interface. type emoji struct { - Emoticons []string `json:"emoticons,omitempty"` ID emojiID `json:"id"` Name string `json:"name"` Keywords []string `json:"keywords"` Skins []skin `json:"skins"` - Version float32 `json:"version"` + Version float64 `json:"version"` + Emoticons []string `json:"emoticons,omitempty"` } -// skin adheres to the skin field within the emoji field of the emoji-mart JSON -// file. +// skin adheres to the skins field within the EmojiMartData Javascript interface. type skin struct { Unified codepoint `json:"unified"` Native string `json:"native"` + X float64 `json:"x,omitempty"` + Y float64 `json:"y,omitempty"` +} + +// sheet adheres to the sheet field within the EmojiMartData Javascript +// interface. +type sheet struct { + Cols float64 `json:"cols"` + Rows float64 `json:"rows"` } diff --git a/emoji/emojiMart_test.go b/emoji/emojiMart_test.go index 81fe787c..0907d862 100644 --- a/emoji/emojiMart_test.go +++ b/emoji/emojiMart_test.go @@ -39,8 +39,9 @@ func Test_emojiMartData_JSON_Marshal_Unmarshal(t *testing.T) { Aliases: map[string]emojiID{ "lady_beetle": "ladybug", }, - Sheet: map[string]interface{}{ - "test": "data", + Sheet: sheet{ + Cols: 5, + Rows: 12, }, } diff --git a/emoji/emojiSet.go b/emoji/emojiSet.go index 147d8811..dbb2095c 100644 --- a/emoji/emojiSet.go +++ b/emoji/emojiSet.go @@ -82,7 +82,7 @@ func (s *Set) findIncompatibleEmojis(set *emojiMartSet) (emojisToRemove []emojiI // Determine if the emoji's codepoint should be replaced or removed replacement, replace := s.replace(Skin.Unified) if replace { - jww.TRACE.Printf("Replaced codepoint %q with %q for emoji %q", + jww.TRACE.Printf("Replaced codepoint %q with %v for emoji %q", Skin.Unified, replacement, id) newSkins = append(newSkins, replacement) } else if !s.remove(Skin.Unified) { -- GitLab