node-readfiles
Version:
A lightweight Node.js module to recursively read files in a directory using ES6 Promises
25 lines (22 loc) • 718 B
text/typescript
export const buildFilter = (filtersParam: string | string[]) => {
const filters = filtersParam instanceof Array ? filtersParam.slice() : [filtersParam];
const filterArray = [];
if (filters.length === 0) return null;
while (filters.length > 0) {
const filter = filters.shift();
filterArray.push(
`\\/?${filter
.replace(/([./\\])/g, '\\$1')
.replace(/(\*?)(\*)(?!\*)/g, (match, prefix) => {
if (prefix === '*') {
return match;
}
return '[^\\/]*';
})
.replace(/\?/g, '[^\\/]?')
.replace(/\*\*/g, '.*')
.replace(/([\-\+\|])/g, '\\$1')}`,
);
}
return new RegExp(`^${filterArray.join('|')}$`, 'i');
};