docs: function zlanddoc(options) {
  
    options = options || {};
    var fileExtensions = options.fileExtensions || ['.js', '.jsx'];
    var fileExtensionObjects = {};
    fileExtensions.forEach(function(ext) {
      fileExtensionObjects[ext] = true;
    });
    var buildFileDescriptions = options.buildFileDescriptions || false;
  
    // Creating a stream through which each file will pass
    return through.obj(function(file, enc, cb) {
      if (file.isStream()) {
        throw new gutil.PluginError('Streams are not supported');
      }
  
      if (file.isNull()) {
        // return empty file
        return cb(null, file);
      }
  
      var directoryPath = path.dirname(file.path);
      var directories = getDirectories(directoryPath);
      var files = getFiles(directoryPath);
      var jsFiles = [];
      var fileDescriptions = [];
  
      var directoryDescriptions = directories.map(function(subdir) {
        return {
          description: getFolderDescription(path.join(directoryPath, subdir)),
          text: subdir,
          link: subdir
        };
      });
  
      if (buildFileDescriptions) {
        jsFiles = files.filter(function(file) {
          return path.extname(file) in fileExtensionObjects;
        });
  
        fileDescriptions = jsFiles.map(function(file) {
          var filePath = path.join(directoryPath, file);
          return {
            description: getFileDescription(filePath),
            text: file,
            link: fs.existsSync(filePath + '.md') ? file + '.md' : file
          };
        });
      }
  
      var fileContent = filterGeneratedContent(file.contents.toString());
      if (fileContent.charAt(fileContent.length - 1) !== "\n") {
        fileContent+= "\n";
      }
      fileContent+= createDescriptionContent(directoryDescriptions, fileDescriptions);
      file.contents = new Buffer(fileContent);
      cb(null, file);
  
      // console.log(directoryPath);
      // console.log(directoryDescriptions);
  
    });
  
  }