// FORME PROMISE utils.corpora.init = function(corporaDir, outputDir) { // console.log(corporaDir, outputDir); return new Promise(function(resolve, reject) { var res = []; // console.log('readDir :' + corporaDir); fs.readdir(corporaDir, function(err, files) { if (err) return reject(err); // RĂ©pertoire des corpus invalide async.each(files, function(file, callback) { var fullPath = path.join(corporaDir, file); // console.log('readFile :' + fullPath); fs.readFile(fullPath, 'utf-8', function(err, res) { if (err) return callback(); // Ce n'est pas un fichier, on l'ignore res.push(file); var outputFile = path.join(outputDir, file); // console.log('writeFile :' + outputFile); fs.writeFile(outputFile, res, 'utf-8', function(err) { // console.log(err); if (err) return callback(err); async.each(['in', 'out'], function(directory, cb) { var dir = path.join(outputDir, directory, file.replace('.txt', '')); // console.log('mkdirp :' + dir); mkdirp(dir, function(err) { if (err) return cb(err); return cb(); }); }, function(err) { if (err) return callback(err); return callback(); }); }); }); }, function(err) { if (err) return reject(err, res); return resolve(null, res); }); }); }); }; // FORME ASYNC/AWAIT (require un code full Promise!!) utils.corpora.init = async function(corporaDir, outputDir) { let files = await (fs.readdirAsync(corporaDir)); for (var i = 0; i < files.length; i++) { let fullPath = path.join(corporaDir, files[i]); let stats = await (fs.statAsync(fullPath)); if (!stats.isFile()) continue; let directories = ['in', 'out'], outputFile = path.join(outputDir, files[i]), content = await (fs.readFileAsync(fullPath, 'utf-8')), write = await (fs.writeFileAsync(outputFile, content, 'utf-8')); for (var j = 0; j < directories.length; j++) { let dir = path.join(outputDir, directories[j], files[i].replace('.txt', '')), mkdir = await (mkdirp.mkdirpAsync(dir)); } } return files; };