UNPKG

@tdb/util

Version:
58 lines 1.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var escapeStringRegexp = require("escape-string-regexp"); var cache = new Map(); function matchesWildcard(inputs, patterns) { if (patterns === undefined || patterns === null) { return []; } if (!(Array.isArray(inputs) && Array.isArray(patterns))) { throw new TypeError("Expected two arrays, got " + typeof inputs + " " + typeof patterns); } if (patterns.length === 0) { return inputs; } var firstNegated = patterns[0][0] === '!'; var regExPatterns = patterns.map(function (x) { return makeRegEx(x, false); }); var result = []; for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) { var input = inputs_1[_i]; var matches = firstNegated; for (var _a = 0, regExPatterns_1 = regExPatterns; _a < regExPatterns_1.length; _a++) { var pattern = regExPatterns_1[_a]; if (pattern.test(input)) { matches = !pattern.negated; } } if (matches) { result.push(input); } } return result; } exports.matchesWildcard = matchesWildcard; function isWildcardMatch(input, pattern) { return pattern === undefined || pattern === null ? false : makeRegEx(pattern, true).test(input); } exports.isWildcardMatch = isWildcardMatch; function makeRegEx(pattern, shouldNegate) { var cacheKey = pattern + shouldNegate; if (cache.has(cacheKey)) { return cache.get(cacheKey); } var negated = pattern[0] === '!'; if (negated) { pattern = pattern.slice(1); } pattern = escapeStringRegexp(pattern).replace(/\\\*/g, '.*'); if (negated && shouldNegate) { pattern = "(?!" + pattern + ")"; } var result = new RegExp("^" + pattern + "$", 'i'); result.negated = negated; cache.set(cacheKey, result); return result; } //# sourceMappingURL=str.wildcard.js.map