]> cat aescling's git repositories - mastodon.git/commitdiff
Compress emoji_data_light.js (#5201)
authorNolan Lawson <nolan@nolanlawson.com>
Tue, 3 Oct 2017 18:43:57 +0000 (11:43 -0700)
committerEugen Rochko <eugen@zeonfederated.com>
Tue, 3 Oct 2017 18:43:57 +0000 (20:43 +0200)
app/javascript/mastodon/emoji_data_compressed.js [new file with mode: 0644]
app/javascript/mastodon/emoji_data_light.js

diff --git a/app/javascript/mastodon/emoji_data_compressed.js b/app/javascript/mastodon/emoji_data_compressed.js
new file mode 100644 (file)
index 0000000..f69a3e4
--- /dev/null
@@ -0,0 +1,22 @@
+// @preval
+const data = require('emoji-mart/dist/data').default;
+const pick = require('lodash/pick');
+const values = require('lodash/values');
+
+const condensedEmojis = Object.keys(data.emojis).map(key => {
+  if (!data.emojis[key].short_names[0] === key) {
+    throw new Error('The condenser expects the first short_code to be the ' +
+      'key. It may need to be rewritten if the emoji change such that this ' +
+      'is no longer the case.');
+  }
+  return values(pick(data.emojis[key], ['short_names', 'unified', 'search']));
+});
+
+// JSON.parse/stringify is to emulate what @preval is doing and avoid any
+// inconsistent behavior in dev mode
+module.exports = JSON.parse(JSON.stringify({
+  emojis: condensedEmojis,
+  skins: data.skins,
+  categories: data.categories,
+  short_names: data.short_names,
+}));
index f034424552539b08f5e199315e1dc6dcbe6c864e..f91ee592e8eb2b7426956d2b09113dbdfc0b94d8 100644 (file)
@@ -1,17 +1,16 @@
-// @preval
-const data = require('emoji-mart/dist/data').default;
-const pick = require('lodash/pick');
+const data = require('./emoji_data_compressed');
 
-const condensedEmojis = {};
-Object.keys(data.emojis).forEach(key => {
-  condensedEmojis[key] = pick(data.emojis[key], ['short_names', 'unified', 'search']);
+// decompress
+const emojis = {};
+data.emojis.forEach(compressedEmoji => {
+  const [ short_names, unified, search ] = compressedEmoji;
+  emojis[short_names[0]] = {
+    short_names,
+    unified,
+    search,
+  };
 });
 
-// JSON.parse/stringify is to emulate what @preval is doing and avoid any
-// inconsistent behavior in dev mode
-module.exports = JSON.parse(JSON.stringify({
-  emojis: condensedEmojis,
-  skins: data.skins,
-  categories: data.categories,
-  short_names: data.short_names,
-}));
+data.emojis = emojis;
+
+module.exports = data;