lookupAlias(aliases, filename, dir) { // First, try looking up the exact filename let alias = aliases[filename]; if (alias == null) { // Otherwise, try replacing glob keys for (let key in aliases) { if (isGlob(key)) { let re = micromatch.makeRe(key, { capture: true }); if (re.test(filename)) { alias = filename.replace(re, aliases[key]); break; } } } // Or try a lookup replacing backslash characters with forward slash if (alias == null && ~filename.indexOf("\\")) { alias = aliases[filename.replace(/\\/g, "/")]; } } if (typeof alias === "string") { return this.resolveFilename(alias, dir); } return alias; }
function matcher() { const re = extglob.makeRe(pattern, options); return function(str) { return re.test(str); }; }
// related to https://github.com/isaacs/minimatch/issues/67 it('should work consistently with `makeRe` and matcher functions', function() { var re = nm.makeRe('node_modules/foobar/**/*.bar'); assert(re.test('node_modules/foobar/foo.bar')); assert(nm.isMatch('node_modules/foobar/foo.bar', 'node_modules/foobar/**/*.bar')); nm(['node_modules/foobar/foo.bar'], 'node_modules/foobar/**/*.bar', ['node_modules/foobar/foo.bar']); });
it('issue #111', function() { assert(!nm.isMatch('something/file.js', '../something/*.js')); assert(!nm.isMatch('./something/file.js', '../something/*.js')); assert(nm.isMatch('./something/file.js', './something/*.js')); assert(nm.isMatch('./something/file.js', 'something/*.js')); assert(nm.isMatch('./something/file.js', '*/file.js')); assert(nm.isMatch('./something/file.js', './*/*.js')); assert(nm.isMatch('./something/file.js', '*/*.js')); assert(!nm.makeRe('something/*.js').test('../something/file.js')); assert(!nm.makeRe('./something/*.js').test('../something/file.js')); assert(nm.makeRe('./something/*.js').test('./something/file.js')); assert(nm.makeRe('something/*.js').test('./something/file.js')); assert(nm.makeRe('./*/file.js').test('./something/file.js')); assert(nm.makeRe('./*/*.js').test('./something/file.js')); assert(nm.makeRe('*/*.js').test('./something/file.js')); });
/** * Create a RegExp from a string, array, or regexp. */ function regexify(val) { if (!val) return new RegExp(/.^/); if (Array.isArray(val)) val = new RegExp(val.map(_lodashStringEscapeRegExp2["default"]).join("|"), "i"); if (_lodashLangIsString2["default"](val)) { // normalise path separators val = _slash2["default"](val); // remove starting wildcards or relative separator if present if (_lodashStringStartsWith2["default"](val, "./") || _lodashStringStartsWith2["default"](val, "*/")) val = val.slice(2); if (_lodashStringStartsWith2["default"](val, "**/")) val = val.slice(3); var regex = _minimatch2["default"].makeRe(val, { nocase: true }); return new RegExp(regex.source.slice(1, -1), "i"); } if (_lodashLangIsRegExp2["default"](val)) return val; throw new TypeError("illegal type for regexify"); }
rules.map(rule => { if (typeof rule === 'string') { rule = minimatch.makeRe(rule); } return rule; })
function makeRules(patterns, dirRules, fileRules) { const rDir = /\/$/; const toRe = pattern => minimatch.makeRe(pattern); patterns && patterns.forEach(pattern => { if (rDir.test(pattern)) { pattern = pattern.replace(rDir, ''); dirRules.push(toRe(pattern)); } else { fileRules.push(toRe(pattern)); } }); }
// https://github.com/micromatch/micromatch/issues/110 // https://github.com/micromatch/nanomatch/issues/6 it('issue micromatch#110', function() { var glob = './css/foo/**/*.css'; assert(nm.isMatch('./css/foo/bar.css', glob)); assert.deepEqual(nm(['./css/foo/bar.css'], glob), ['css/foo/bar.css']); assert(nm.isMatch('.\\css\\foo\\bar.css', glob, {unixify: true})); assert.deepEqual(nm(['.\\css\\foo\\bar.css'], glob, {unixify: true}), ['css/foo/bar.css']); assert.deepEqual(nm.match(['./foo/bar.js'], '**/*.js'), ['foo/bar.js']); assert.deepEqual(nm.match(['./foo/bar.js'], '**/*.js', {stripPrefix: false}), ['./foo/bar.js']); assert(nm.isMatch('./foo/bar.js', '**/*.js')); assert(nm.isMatch('foo/bar.js', '**/*.js')); assert(nm.isMatch('.\\foo\\bar.js', '**/*.js', {unixify: true})); assert(nm.isMatch('foo\\bar.js', '**/*.js', {unixify: true})); assert(nm.makeRe('**/*.js').test('./foo/bar.js')); assert(nm.makeRe('**/*.js').test('foo/bar.js')); assert(nm.makeRe('**/*.js').test('.\\foo\\bar.js')); assert(nm.makeRe('**/*.js', {unixify: true}).test('.\\foo\\bar.js')); assert(nm.makeRe('**/*.js', {unixify: true}).test('foo\\bar.js')); });
lookupAlias(aliases, filename, dir) { // First, try looking up the exact filename let alias = aliases[filename]; if (alias == null) { // Otherwise, try replacing glob keys for (let key in aliases) { if (isGlob(key)) { let re = micromatch.makeRe(key, { capture: true }); if (re.test(filename)) { alias = filename.replace(re, aliases[key]); break; } } } // Or try a lookup replacing backslash characters with forward slash if (alias == null && ~filename.indexOf("\\")) { alias = aliases[filename.replace(/\\/g, "/")]; } } if (typeof alias === "string") { return this.resolveFilename(alias, dir); } return alias; }
function makeRules(patterns, dirRules, fileRules) { const rDir = /\/$/; const toRe = pattern => minimatch.makeRe(pattern); patterns && patterns.forEach(pattern => { if (rDir.test(pattern)) { pattern = pattern.replace(rDir, ''); dirRules.push(toRe(pattern)); } else { fileRules.push(toRe(pattern)); } }); }
rules.map(rule => { if (typeof rule === 'string') { rule = minimatch.makeRe(rule); } return rule; })
/** * Create a RegExp from a string, array, or regexp. */ function regexify(val) { if (!val) return new RegExp(/.^/); if (Array.isArray(val)) val = new RegExp(val.map(_lodashStringEscapeRegExp2["default"]).join("|"), "i"); if (_lodashLangIsString2["default"](val)) { // normalise path separators val = _slash2["default"](val); // remove starting wildcards or relative separator if present if (_lodashStringStartsWith2["default"](val, "./") || _lodashStringStartsWith2["default"](val, "*/")) val = val.slice(2); if (_lodashStringStartsWith2["default"](val, "**/")) val = val.slice(3); var regex = _minimatch2["default"].makeRe(val, { nocase: true }); return new RegExp(regex.source.slice(1, -1), "i"); } if (_lodashLangIsRegExp2["default"](val)) return val; throw new TypeError("illegal type for regexify"); }
/** * Create a RegExp from a string, array, or regexp. */ function regexify(val) { if (!val) return new RegExp(/.^/); if (Array.isArray(val)) val = new RegExp(val.map(_lodashStringEscapeRegExp2["default"]).join("|"), "i"); if (_lodashLangIsString2["default"](val)) { // normalise path separators val = _slash2["default"](val); // remove starting wildcards or relative separator if present if (_lodashStringStartsWith2["default"](val, "./") || _lodashStringStartsWith2["default"](val, "*/")) val = val.slice(2); if (_lodashStringStartsWith2["default"](val, "**/")) val = val.slice(3); var regex = _minimatch2["default"].makeRe(val, { nocase: true }); return new RegExp(regex.source.slice(1, -1), "i"); } if (_lodashLangIsRegExp2["default"](val)) return val; throw new TypeError("illegal type for regexify"); }
/** * Create a RegExp from a string, array, or regexp. */ function regexify(val) { if (!val) return new RegExp(/.^/); if (Array.isArray(val)) val = new RegExp(val.map(_lodashStringEscapeRegExp2["default"]).join("|"), "i"); if (_lodashLangIsString2["default"](val)) { // normalise path separators val = _slash2["default"](val); // remove starting wildcards or relative separator if present if (_lodashStringStartsWith2["default"](val, "./") || _lodashStringStartsWith2["default"](val, "*/")) val = val.slice(2); if (_lodashStringStartsWith2["default"](val, "**/")) val = val.slice(3); var regex = _minimatch2["default"].makeRe(val, { nocase: true }); return new RegExp(regex.source.slice(1, -1), "i"); } if (_lodashLangIsRegExp2["default"](val)) return val; throw new TypeError("illegal type for regexify"); }