Merge pull request #1651 from thelounge/xpaw/new-emoji

Generate emoji map from EmojiOne data
This commit is contained in:
Pavel Djundik 2017-10-29 10:25:14 +02:00 committed by GitHub
commit a60d7e31d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 1121 additions and 782 deletions

File diff suppressed because it is too large Load diff

70
scripts/generate-emoji.js Normal file
View file

@ -0,0 +1,70 @@
"use strict";
const request = require("request");
const path = require("path");
const fs = require("fs");
const fuzzy = require("fuzzy");
request.get({
url: "https://raw.githubusercontent.com/emojione/emojione/master/emoji_strategy.json",
json: true,
}, (error, response, emojiStrategy) => {
const emojiMap = {};
for (const key in emojiStrategy) {
if (emojiStrategy.hasOwnProperty(key)) {
const shortname = prepareShortName(emojiStrategy[key].shortname);
// Skip tones, at least for now
if (shortname.indexOf("tone") > -1) {
continue;
}
const unicode = stringToUnicode(key);
emojiMap[shortname] = unicode;
for (let alternative of emojiStrategy[key].shortname_alternates) {
alternative = prepareShortName(alternative);
if (fuzzy.test(shortname, alternative) || fuzzy.test(alternative, shortname)) {
continue;
}
emojiMap[alternative] = unicode;
}
}
}
const output = JSON.stringify(emojiMap, null, 2) + "\n";
fs.writeFileSync(path.resolve(path.join(
__dirname,
"..",
"client",
"js",
"libs",
"simplemap.json"
)), output);
});
function stringToUnicode(key) {
return key
.split("-")
.map((c) => String.fromCodePoint(`0x${c}`))
.join("");
}
function prepareShortName(shortname) {
if (shortname === ":-1:") {
// We replace dashes, but should keep :-1: working
return "-1";
} else if (shortname === ":e-mail:") {
// :email: exists as an alternative, should figure out how to use it instead
return "email";
}
return shortname
.slice(1, -1)
.replace("-", "_");
}