node-readfiles
Advanced tools
Comparing version 0.0.6 to 0.0.7
var fs = require('fs'); | ||
var path = require('path'); | ||
function buildFilter(filters) { | ||
var filters = (filters instanceof Array) ? filters.slice() : [filters]; | ||
var filterArray = []; | ||
function filterFile(filename, filters) { | ||
var filterArray = (filters instanceof Array) ? filters.slice() : [filters]; | ||
if (filters.length === 0) return null; | ||
while(filterArray.length > 0) { | ||
var filter = filterArray.shift(); | ||
var filterRegex = new RegExp('^\\/?' + | ||
filter.replace(/\./g, '\\.') | ||
.replace(/(\*?)(\*)(?!\*)/g, function(match, prefix) { | ||
if(prefix == '*') { | ||
return match; | ||
} | ||
return '[^\\/]*'; | ||
}) | ||
.replace(/\?/g, '[^\\/]?') | ||
.replace(/\*\*/g, '\.*') | ||
.replace(/([\-\+])/g, '\\$1') + '$' | ||
, 'i'); | ||
if (filterRegex.test('/' + filename)) { | ||
return true; | ||
} | ||
while(filters.length > 0) { | ||
var filter = filters.shift(); | ||
filterArray.push('\\/?' + filter.replace(/\./g, '\\.') | ||
.replace(/(\*?)(\*)(?!\*)/g, function(match, prefix) { | ||
if(prefix == '*') { | ||
return match; | ||
} | ||
return '[^\\/]*'; | ||
}) | ||
.replace(/\?/g, '[^\\/]?') | ||
.replace(/\*\*/g, '\.*') | ||
.replace(/([\-\+\|])/g, '\\$1') | ||
); | ||
} | ||
return false; | ||
return new RegExp('^' + filterArray.join('|') + '$', 'i'); | ||
} | ||
@@ -43,2 +39,4 @@ | ||
var subdirs = []; | ||
var filterRegExp = options.filter && buildFilter(options.filter); | ||
(function traverseDir(dirpath, done) { | ||
@@ -96,3 +94,4 @@ fs.readdir(dirpath, function (err, fileList) { | ||
if (options.filter && !filterFile(relFilename, options.filter)) { | ||
// test filters, if it does not match move to next file | ||
if (filterRegExp && !filterRegExp.test('/' + relFilename)) { | ||
return next(); | ||
@@ -99,0 +98,0 @@ } |
{ | ||
"name": "node-readfiles", | ||
"version": "0.0.6", | ||
"version": "0.0.7", | ||
"description": "A lightweight Node.js module to recursively read files in a directory", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
27450