Newer
Older
tdm-utils / index.beta.js
// 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;
};