to-regexp
Version:
Convert globs, strings, and arrays to a single RegExp.
85 lines (74 loc) • 1.88 kB
JavaScript
// Generated by CoffeeScript 1.10.0
var endOfRegExp, globToRegExp, isArray, isRegExp, isRegExpString, isString, stringToRegExp, toRegExp;
globToRegExp = require('glob-to-regexp');
isArray = require('is-array');
isRegExp = require('is-regexp');
isString = require('is-string');
endOfRegExp = /\/([gimy]+)?$/;
isRegExpString = function(s) {
return (s.charAt(0)) === '/' && (endOfRegExp.test(s));
};
stringToRegExp = function(s) {
var flags, index, match;
match = endOfRegExp.exec(s);
flags = match[1];
index = match.index;
return new RegExp(s.substring(1, index), flags);
};
toRegExp = function(s) {
s = s.trim();
if (!s) {
return;
}
if (isRegExpString(s)) {
return stringToRegExp(s);
} else {
return globToRegExp(s, {
extended: true
});
}
};
module.exports = function(patterns, opts) {
var i, len, pattern, re, regexps;
if (opts == null) {
opts = {};
}
if (isString(patterns)) {
return toRegExp(patterns);
}
if (isRegExp(patterns)) {
return patterns;
}
if (patterns == null) {
return;
}
if (!isArray(patterns)) {
throw new Error("Expected Array, RegExp or String found '" + patterns + "'");
}
regexps = [];
for (i = 0, len = patterns.length; i < len; i++) {
pattern = patterns[i];
if (isString(pattern)) {
if (pattern.trim()) {
regexps.push(toRegExp(pattern));
}
} else if (isRegExp(pattern)) {
regexps.push(pattern);
} else {
throw new Error("Expected RegExp or String found '" + pattern + "'");
}
}
if (!(regexps.length > 0)) {
return;
}
return new RegExp(((function() {
var j, len1, results;
results = [];
for (j = 0, len1 = regexps.length; j < len1; j++) {
re = regexps[j];
results.push(re.source);
}
return results;
})()).join('|'));
};
//# sourceMappingURL=index.js.map