У меня есть следующий код, предназначенный для создания файла JSON, содержащего все смайлики, необходимые для проекта, над которым я работаю, с учетом следующего исходного файла https://unicode.org/Public/emoji/11.0/emoji-test.txt
Я запускаю приведенный ниже код как частьсценария сборки gulp.
, но при запуске кода появляется ошибка
Следующие задачи не были выполнены: emojis [12:11:40] Вы забыли сообщить о завершении асинхронного?
это содержимое файла emoji2.json, который я пытаюсь создать
{"emojis":[]}
Не стоит, я не очень знаком с async
const fs = require('fs');
const readline = require('readline');
const gulp = require('gulp');
const json = {};
const emojis = [];
let cat = '';
const parseEmojis = file => {
const filters = {
group: '# group:',
emoji: /[0-9A-Z]{4,5}/g,
longspace: /\s{2}/g,
unicode: /\d[0-9abcdef-]{3,99}/g,
name: /[\w\å][.\-\’\!\:\#\*\(\)\“\”\&éôçãí]*/g,
sanatize: /(fully-qualified|non-fully-qualified) *#/g
};
return new Promise(resolve => {
const readLines = readline.createInterface({
input: fs.createReadStream(file),
crlfDelay: Infinity
});
readLines.on('line', line => {
if (line.indexOf(filters.group) !== -1) {
cat = line.replace(filters.group, '');
cat = cat.toLowerCase();
cat = cat.replace('-&-', '-');
} else if (line.match(filters.emoji)) {
const emoji = {};
let unicode = '';
let name = '';
// Sanatize line
line = line.replace(filters.sanatize, '');
// Clear deliminators
line = line.replace(' ;', '');
line = line.replace('; ', '');
line = line.replace(';', '');
// Squash long spaces
line = line.replace(filters.longspace, '');
// Concert spaces to dashs
line = line.replace(/ (?=\w)/g, '-');
line = line.replace(' ', '-');
// Make lowercase
line = line.toLowerCase();
// Prep for unicode
line = line.replace('8-ball', '%');
unicode = line;
line = line.replace(filters.unicode, '');
emoji.unicode = unicode.replace(line, '');
// Undo unicode prep
line = line.replace('%', '8-ball');
// Set Char & name
name = line;
line = line.replace(filters.name, '');
emoji.char = line.replace('-', '');
emoji.name = name.replace(line, '');
// Save obj
emojis[cat] = [];
emojis[cat].push(emoji);
}
json.emojis = emojis;
});
readLines.on('close', () => {
resolve();
});
});
};
const buildEmojis = async file => {
await parseEmojis(file);
};
gulp.task('emojis', () => {
buildEmojis('./emoji.txt').then(() => {
fs.writeFile('./tests/mock/emojis2.json', JSON.stringify(json), err => {
if (err) {
return console.log(err);
}
});
});
});