Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
2f5fe61
commit 2e97b1f
Showing
33 changed files
with
365 additions
and
340 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,4 +3,3 @@ dist/ | |
dist-es/ | ||
stats.json | ||
report.html | ||
/src/data/data.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,112 +1,11 @@ | ||
var fs = require('fs'), | ||
emojiData = require('emoji-datasource'), | ||
emojiLib = require('emojilib'), | ||
inflection = require('inflection'), | ||
mkdirp = require('mkdirp') | ||
const build = require('./build') | ||
const sets = ['apple', 'emojione', 'facebook', 'google', 'messenger', 'twitter'] | ||
|
||
var data = { categories: [], emojis: {}, skins: {}, aliases: {} }, | ||
categoriesIndex = {} | ||
build({ output: 'data/all.json' }) | ||
|
||
var categories = [ | ||
['Smileys & People', 'people'], | ||
['Animals & Nature', 'nature'], | ||
['Food & Drink', 'foods'], | ||
['Activities', 'activity'], | ||
['Travel & Places', 'places'], | ||
['Objects', 'objects'], | ||
['Symbols', 'symbols'], | ||
['Flags', 'flags'], | ||
] | ||
|
||
categories.forEach((category, i) => { | ||
let [name, id] = category | ||
data.categories[i] = { id: id, name: name, emojis: [] } | ||
categoriesIndex[name] = i | ||
}) | ||
|
||
emojiData.sort((a, b) => { | ||
var aTest = a.sort_order || a.short_name, | ||
bTest = b.sort_order || b.short_name | ||
|
||
return aTest - bTest | ||
}) | ||
|
||
emojiData.forEach((datum) => { | ||
var category = datum.category, | ||
keywords = [], | ||
categoryIndex | ||
|
||
if (!datum.category) { | ||
throw new Error('“' + datum.short_name + '” doesn’t have a category') | ||
} | ||
|
||
datum.name || (datum.name = datum.short_name.replace(/\-/g, ' ')) | ||
datum.name = inflection.titleize(datum.name || '') | ||
|
||
if (!datum.name) { | ||
throw new Error('“' + datum.short_name + '” doesn’t have a name') | ||
} | ||
|
||
datum.emoticons = datum.texts || [] | ||
datum.text = datum.text || '' | ||
delete datum.texts | ||
|
||
if (emojiLib.lib[datum.short_name]) { | ||
datum.keywords = emojiLib.lib[datum.short_name].keywords | ||
} | ||
|
||
if (datum.category == 'Skin Tones') { | ||
data.skins[datum.short_name] = datum | ||
} else { | ||
categoryIndex = categoriesIndex[category] | ||
data.categories[categoryIndex].emojis.push(datum.short_name) | ||
data.emojis[datum.short_name] = datum | ||
} | ||
|
||
datum.short_names.forEach((short_name, i) => { | ||
if (i == 0) { | ||
return | ||
} | ||
|
||
data.aliases[short_name] = datum.short_name | ||
sets.forEach((set) => { | ||
build({ | ||
output: `data/${set}.json`, | ||
sets: [set], | ||
}) | ||
|
||
datum.short_names = datum.short_names.filter((i) => i !== datum.short_name) | ||
datum.sheet = [datum.sheet_x, datum.sheet_y] | ||
|
||
if (datum.text === '') delete datum.text | ||
if (datum.added_in === '6.0') delete datum.added_in | ||
|
||
delete datum.docomo | ||
delete datum.au | ||
delete datum.softbank | ||
delete datum.google | ||
delete datum.image | ||
delete datum.short_name | ||
delete datum.category | ||
delete datum.sort_order | ||
delete datum.sheet_x | ||
delete datum.sheet_y | ||
|
||
for (let key in datum) { | ||
let value = datum[key] | ||
|
||
if (Array.isArray(value) && !value.length) { | ||
delete datum[key] | ||
} | ||
} | ||
}) | ||
|
||
var flags = data.categories[categoriesIndex['Flags']] | ||
flags.emojis = flags.emojis | ||
.filter((flag) => { | ||
// Until browsers support Flag UN | ||
if (flag == 'flag-un') return | ||
return true | ||
}) | ||
.sort() | ||
|
||
const stringified = JSON.stringify(data).replace(/\"([A-Za-z_]+)\":/g, '$1:') | ||
fs.writeFile('src/data/data.js', `export default ${stringified}`, (err) => { | ||
if (err) throw err | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
var fs = require('fs'), | ||
emojiLib = require('emojilib'), | ||
inflection = require('inflection'), | ||
mkdirp = require('mkdirp') | ||
|
||
var { compress } = require('../src/utils/data') | ||
|
||
var categories = [ | ||
['Smileys & People', 'people'], | ||
['Animals & Nature', 'nature'], | ||
['Food & Drink', 'foods'], | ||
['Activities', 'activity'], | ||
['Travel & Places', 'places'], | ||
['Objects', 'objects'], | ||
['Symbols', 'symbols'], | ||
['Flags', 'flags'], | ||
] | ||
|
||
var sets = ['apple', 'emojione', 'facebook', 'google', 'messenger', 'twitter'] | ||
|
||
module.exports = (options) => { | ||
delete require.cache[require.resolve('emoji-datasource')] | ||
var emojiData = require('emoji-datasource') | ||
|
||
var data = { compressed: true, categories: [], emojis: {}, aliases: {} }, | ||
categoriesIndex = {} | ||
|
||
categories.forEach((category, i) => { | ||
let [name, id] = category | ||
data.categories[i] = { id: id, name: name, emojis: [] } | ||
categoriesIndex[name] = i | ||
}) | ||
|
||
emojiData.sort((a, b) => { | ||
var aTest = a.sort_order || a.short_name, | ||
bTest = b.sort_order || b.short_name | ||
|
||
return aTest - bTest | ||
}) | ||
|
||
emojiData.forEach((datum) => { | ||
var category = datum.category, | ||
keywords = [], | ||
categoryIndex | ||
|
||
if (!datum.category) { | ||
throw new Error('“' + datum.short_name + '” doesn’t have a category') | ||
} | ||
|
||
if (options.sets) { | ||
var keepEmoji = false | ||
|
||
options.sets.forEach((set) => { | ||
if (keepEmoji) return | ||
if (datum[`has_img_${set}`]) { | ||
keepEmoji = true | ||
} | ||
}) | ||
|
||
if (!keepEmoji) { | ||
return | ||
} | ||
|
||
sets.forEach((set) => { | ||
if (options.sets.length == 1 || options.sets.indexOf(set) == -1) { | ||
var key = `has_img_${set}` | ||
delete datum[key] | ||
} | ||
}) | ||
} | ||
|
||
datum.name || (datum.name = datum.short_name.replace(/\-/g, ' ')) | ||
datum.name = inflection.titleize(datum.name || '') | ||
|
||
if (!datum.name) { | ||
throw new Error('“' + datum.short_name + '” doesn’t have a name') | ||
} | ||
|
||
datum.emoticons = datum.texts || [] | ||
datum.text = datum.text || '' | ||
delete datum.texts | ||
|
||
if (emojiLib.lib[datum.short_name]) { | ||
datum.keywords = emojiLib.lib[datum.short_name].keywords | ||
} | ||
|
||
if (datum.category != 'Skin Tones') { | ||
categoryIndex = categoriesIndex[category] | ||
data.categories[categoryIndex].emojis.push(datum.short_name) | ||
data.emojis[datum.short_name] = datum | ||
} | ||
|
||
datum.short_names.forEach((short_name, i) => { | ||
if (i == 0) { | ||
return | ||
} | ||
|
||
data.aliases[short_name] = datum.short_name | ||
}) | ||
|
||
delete datum.docomo | ||
delete datum.au | ||
delete datum.softbank | ||
delete datum.google | ||
delete datum.image | ||
delete datum.category | ||
delete datum.sort_order | ||
|
||
compress(datum) | ||
}) | ||
|
||
var flags = data.categories[categoriesIndex['Flags']] | ||
flags.emojis = flags.emojis | ||
.filter((flag) => { | ||
// Until browsers support Flag UN | ||
if (flag == 'flag-un') return | ||
return true | ||
}) | ||
.sort() | ||
|
||
fs.writeFile(options.output, JSON.stringify(data), (err) => { | ||
if (err) throw err | ||
}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.