30 lines
687 B
JavaScript
30 lines
687 B
JavaScript
var util = require('util');
|
|
|
|
function escapeGlobStringOrArray(escapeFn) {
|
|
return function(glob) {
|
|
if (typeof glob === 'string') {
|
|
return escapeFn(glob);
|
|
}
|
|
if (Array.isArray(glob)) {
|
|
return glob.map(escapeFn);
|
|
}
|
|
throw new Error('glob pattern needs to be a string or array');
|
|
};
|
|
}
|
|
|
|
function escapeGlob(glob) {
|
|
return glob
|
|
.replace(/\\/g, '\\\\')
|
|
.replace(/\*/g, '\\*')
|
|
.replace(/\?/g, '\\?')
|
|
.replace(/\[/g, '\\[')
|
|
.replace(/\]/g, '\\]')
|
|
.replace(/\{/g, '\\{')
|
|
.replace(/\}/g, '\\}')
|
|
.replace(/\)/g, '\\)')
|
|
.replace(/\(/g, '\\(')
|
|
.replace(/\!/g, '\\!');
|
|
}
|
|
|
|
module.exports = escapeGlobStringOrArray(escapeGlob);
|