aboutsummaryrefslogtreecommitdiff
path: root/tools/emoji_merger.js
diff options
context:
space:
mode:
authorShpuld Shpuldson <shp@cock.li>2020-11-30 14:43:39 +0200
committerShpuld Shpuldson <shp@cock.li>2020-11-30 14:43:39 +0200
commit767db567ad04f0c7f1140cdf650fca9a58becda5 (patch)
tree3eed4acad2096b21af3ac2016ecb5dd22c01309d /tools/emoji_merger.js
parent32f77cfbd7a7f459e69b94a85c1aeaef9ddb9ea1 (diff)
update emoji.json, add script that merges new emoji from another source
Diffstat (limited to 'tools/emoji_merger.js')
-rw-r--r--tools/emoji_merger.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/tools/emoji_merger.js b/tools/emoji_merger.js
new file mode 100644
index 00000000..a74e847e
--- /dev/null
+++ b/tools/emoji_merger.js
@@ -0,0 +1,67 @@
+/*
+ Emoji merger script, quick hack of a tool to:
+ - update some missing emoji from an external source
+ - sort the emoji
+ - remove all multipart emoji (reactions don't allow them)
+
+ Merges emoji from here: https://gist.github.com/oliveratgithub/0bf11a9aff0d6da7b46f1490f86a71eb
+ to the simpler format we're using.
+*/
+
+// Existing emojis we have
+const oldEmojiFilename = '../static/emoji.json'
+
+// The file downloaded from https://gist.github.com/oliveratgithub/0bf11a9aff0d6da7b46f1490f86a71eb
+const newEmojiFilename = 'emojis.json'
+
+// Output, replace the static/emoji.json with this file if it looks correct
+const outputFilename = 'output.json'
+
+const run = () => {
+ const fs = require('fs')
+
+ let newEmojisObject = {}
+ let emojisObject = {}
+
+ let data = fs.readFileSync(newEmojiFilename, 'utf8')
+
+ // First filter out anything that's more than one codepoint
+ const newEmojis = JSON.parse(data).emojis.filter(e => e.emoji.length <= 2)
+
+ // Create a table with format { shortname: emoji }, remove the :
+ newEmojis.forEach(e => {
+ const name = e.shortname.slice(1, e.shortname.length - 1).toLowerCase()
+ if (name.length > 0) {
+ newEmojisObject[name] = e.emoji
+ }
+ })
+
+ data = fs.readFileSync(oldEmojiFilename, 'utf8')
+
+ emojisObject = JSON.parse(data)
+
+ // Get rid of longer emojis that don't play nice with reactions
+ Object.keys(emojisObject).forEach(e => {
+ if (emojisObject[e].length > 2) emojisObject[e] = undefined
+ })
+
+ // Add new emojis from the new tables to the old table
+ Object.keys(newEmojisObject).forEach(e => {
+ if (!emojisObject[e] && newEmojisObject[e].length <= 2) {
+ emojisObject[e] = newEmojisObject[e]
+ }
+ })
+
+ // Sort by key
+ const sorted = Object.keys(emojisObject).sort().reduce((acc, key) => {
+ if (key.length === 0) return acc
+ acc[key] = emojisObject[key]
+ return acc
+ }, {})
+
+ fs.writeFile(outputFilename, JSON.stringify(sorted, null, 2), 'utf8', (err) => {
+ if (err) console.log('Error writing file', err)
+ })
+}
+
+run()