code: function process(configure, ret) {
    ret = configure.buffer + ret;
    var pos = ret.lastIndexOf('\n');
    configure.buffer = ret.slice(pos + 1);
    ret = ret.slice(0, pos);
    ret = ret.split(/\n+/);
    ret = ret.map(item => item && mapper(item.split(configure.separator), configure.map));
  
    if(!ret.length) return;
    configure.count += ret.length;
  
    if(configure.first && typeof configure.dist === 'string' ) {
      configure.first = 0;
      fs.writeFileSync(configure.dist, '[');
    }
  
    if(configure.cacheArray.length > STOP) {
      // if configure.dist is a function, instead of creating a new file, exec it with the result
      // the result should be an array
      typeof configure.dist === 'string' ? append(configure) : configure.dist(configure.cacheArray.slice());
      return configure.cacheArray.length = 0;
    }
  
    configure.cacheArray.push.apply(configure.cacheArray, ret);
  }
docs: /* Process file with stream
  @param {object} configure
  @param {string} ret, string read as stream in one time