UNPKG

1.4 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = pathToPattern;
7
8function _path() {
9 const data = _interopRequireDefault(require("path"));
10
11 _path = function () {
12 return data;
13 };
14
15 return data;
16}
17
18function _escapeRegExp() {
19 const data = _interopRequireDefault(require("lodash/escapeRegExp"));
20
21 _escapeRegExp = function () {
22 return data;
23 };
24
25 return data;
26}
27
28function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
30const sep = `\\${_path().default.sep}`;
31const endSep = `(?:${sep}|$)`;
32const substitution = `[^${sep}]+`;
33const starPat = `(?:${substitution}${sep})`;
34const starPatLast = `(?:${substitution}${endSep})`;
35const starStarPat = `${starPat}*?`;
36const starStarPatLast = `${starPat}*?${starPatLast}?`;
37
38function pathToPattern(pattern, dirname) {
39 const parts = _path().default.resolve(dirname, pattern).split(_path().default.sep);
40
41 return new RegExp(["^", ...parts.map((part, i) => {
42 const last = i === parts.length - 1;
43 if (part === "**") return last ? starStarPatLast : starStarPat;
44 if (part === "*") return last ? starPatLast : starPat;
45
46 if (part.indexOf("*.") === 0) {
47 return substitution + (0, _escapeRegExp().default)(part.slice(1)) + (last ? endSep : sep);
48 }
49
50 return (0, _escapeRegExp().default)(part) + (last ? endSep : sep);
51 })].join(""));
52}
\No newline at end of file