diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-05-12 16:10:11 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-05-12 16:10:11 +0200 |
commit | c8c2a61f966a5f99e41bfc316fe91141536f1483 (patch) | |
tree | e05bdf6915b5090d8fd492c6f137d170f717ad3a /lib/models | |
parent | 08d780d1f63a96ee26386d92e38f3b764ccda37e (diff) | |
download | gitbook-c8c2a61f966a5f99e41bfc316fe91141536f1483.zip gitbook-c8c2a61f966a5f99e41bfc316fe91141536f1483.tar.gz gitbook-c8c2a61f966a5f99e41bfc316fe91141536f1483.tar.bz2 |
Fix #1289: add option to filter files when listing using fs.listAllFiles
Diffstat (limited to 'lib/models')
-rw-r--r-- | lib/models/fs.js | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/models/fs.js b/lib/models/fs.js index 12aee53..20c13ef 100644 --- a/lib/models/fs.js +++ b/lib/models/fs.js @@ -198,23 +198,29 @@ FS.prototype.listFiles = function(dirname) { /** List all files in a directory - @param {String} dirname + @param {String} dirName + @param {Function(dirName)} filterFn: call it for each file/directory to test if it should stop iterating @return {Promise<List<String>>} */ -FS.prototype.listAllFiles = function(folder) { +FS.prototype.listAllFiles = function(dirName, filterFn) { var that = this; - folder = folder || '.'; + dirName = dirName || '.'; - return this.readDir(folder) + return this.readDir(dirName) .then(function(files) { return Promise.reduce(files, function(out, file) { var isDirectory = pathIsFolder(file); + var newDirName = path.join(dirName, file); + + if (filterFn && filterFn(newDirName) === false) { + return out; + } if (!isDirectory) { - return out.push(path.join(folder, file)); + return out.push(newDirName); } - return that.listAllFiles(path.join(folder, file)) + return that.listAllFiles(newDirName, filterFn) .then(function(inner) { return out.concat(inner); }); |