micromatch 2.3.11 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of micromatch might be problematic. Click here for more details.
- package/CHANGELOG.md +37 -0
- package/LICENSE +1 -1
- package/README.md +735 -349
- package/index.js +699 -283
- package/lib/cache.js +1 -0
- package/lib/compilers.js +78 -0
- package/lib/parsers.js +83 -0
- package/lib/utils.js +246 -83
- package/package.json +85 -47
- package/lib/chars.js +0 -67
- package/lib/expand.js +0 -304
- package/lib/glob.js +0 -193
package/lib/glob.js
DELETED
@@ -1,193 +0,0 @@
|
|
1
|
-
'use strict';
|
2
|
-
|
3
|
-
var chars = require('./chars');
|
4
|
-
var utils = require('./utils');
|
5
|
-
|
6
|
-
/**
|
7
|
-
* Expose `Glob`
|
8
|
-
*/
|
9
|
-
|
10
|
-
var Glob = module.exports = function Glob(pattern, options) {
|
11
|
-
if (!(this instanceof Glob)) {
|
12
|
-
return new Glob(pattern, options);
|
13
|
-
}
|
14
|
-
this.options = options || {};
|
15
|
-
this.pattern = pattern;
|
16
|
-
this.history = [];
|
17
|
-
this.tokens = {};
|
18
|
-
this.init(pattern);
|
19
|
-
};
|
20
|
-
|
21
|
-
/**
|
22
|
-
* Initialize defaults
|
23
|
-
*/
|
24
|
-
|
25
|
-
Glob.prototype.init = function(pattern) {
|
26
|
-
this.orig = pattern;
|
27
|
-
this.negated = this.isNegated();
|
28
|
-
this.options.track = this.options.track || false;
|
29
|
-
this.options.makeRe = true;
|
30
|
-
};
|
31
|
-
|
32
|
-
/**
|
33
|
-
* Push a change into `glob.history`. Useful
|
34
|
-
* for debugging.
|
35
|
-
*/
|
36
|
-
|
37
|
-
Glob.prototype.track = function(msg) {
|
38
|
-
if (this.options.track) {
|
39
|
-
this.history.push({msg: msg, pattern: this.pattern});
|
40
|
-
}
|
41
|
-
};
|
42
|
-
|
43
|
-
/**
|
44
|
-
* Return true if `glob.pattern` was negated
|
45
|
-
* with `!`, also remove the `!` from the pattern.
|
46
|
-
*
|
47
|
-
* @return {Boolean}
|
48
|
-
*/
|
49
|
-
|
50
|
-
Glob.prototype.isNegated = function() {
|
51
|
-
if (this.pattern.charCodeAt(0) === 33 /* '!' */) {
|
52
|
-
this.pattern = this.pattern.slice(1);
|
53
|
-
return true;
|
54
|
-
}
|
55
|
-
return false;
|
56
|
-
};
|
57
|
-
|
58
|
-
/**
|
59
|
-
* Expand braces in the given glob pattern.
|
60
|
-
*
|
61
|
-
* We only need to use the [braces] lib when
|
62
|
-
* patterns are nested.
|
63
|
-
*/
|
64
|
-
|
65
|
-
Glob.prototype.braces = function() {
|
66
|
-
if (this.options.nobraces !== true && this.options.nobrace !== true) {
|
67
|
-
// naive/fast check for imbalanced characters
|
68
|
-
var a = this.pattern.match(/[\{\(\[]/g);
|
69
|
-
var b = this.pattern.match(/[\}\)\]]/g);
|
70
|
-
|
71
|
-
// if imbalanced, don't optimize the pattern
|
72
|
-
if (a && b && (a.length !== b.length)) {
|
73
|
-
this.options.makeRe = false;
|
74
|
-
}
|
75
|
-
|
76
|
-
// expand brace patterns and join the resulting array
|
77
|
-
var expanded = utils.braces(this.pattern, this.options);
|
78
|
-
this.pattern = expanded.join('|');
|
79
|
-
}
|
80
|
-
};
|
81
|
-
|
82
|
-
/**
|
83
|
-
* Expand bracket expressions in `glob.pattern`
|
84
|
-
*/
|
85
|
-
|
86
|
-
Glob.prototype.brackets = function() {
|
87
|
-
if (this.options.nobrackets !== true) {
|
88
|
-
this.pattern = utils.brackets(this.pattern);
|
89
|
-
}
|
90
|
-
};
|
91
|
-
|
92
|
-
/**
|
93
|
-
* Expand bracket expressions in `glob.pattern`
|
94
|
-
*/
|
95
|
-
|
96
|
-
Glob.prototype.extglob = function() {
|
97
|
-
if (this.options.noextglob === true) return;
|
98
|
-
|
99
|
-
if (utils.isExtglob(this.pattern)) {
|
100
|
-
this.pattern = utils.extglob(this.pattern, {escape: true});
|
101
|
-
}
|
102
|
-
};
|
103
|
-
|
104
|
-
/**
|
105
|
-
* Parse the given pattern
|
106
|
-
*/
|
107
|
-
|
108
|
-
Glob.prototype.parse = function(pattern) {
|
109
|
-
this.tokens = utils.parseGlob(pattern || this.pattern, true);
|
110
|
-
return this.tokens;
|
111
|
-
};
|
112
|
-
|
113
|
-
/**
|
114
|
-
* Replace `a` with `b`. Also tracks the change before and
|
115
|
-
* after each replacement. This is disabled by default, but
|
116
|
-
* can be enabled by setting `options.track` to true.
|
117
|
-
*
|
118
|
-
* Also, when the pattern is a string, `.split()` is used,
|
119
|
-
* because it's much faster than replace.
|
120
|
-
*
|
121
|
-
* @param {RegExp|String} `a`
|
122
|
-
* @param {String} `b`
|
123
|
-
* @param {Boolean} `escape` When `true`, escapes `*` and `?` in the replacement.
|
124
|
-
* @return {String}
|
125
|
-
*/
|
126
|
-
|
127
|
-
Glob.prototype._replace = function(a, b, escape) {
|
128
|
-
this.track('before (find): "' + a + '" (replace with): "' + b + '"');
|
129
|
-
if (escape) b = esc(b);
|
130
|
-
if (a && b && typeof a === 'string') {
|
131
|
-
this.pattern = this.pattern.split(a).join(b);
|
132
|
-
} else {
|
133
|
-
this.pattern = this.pattern.replace(a, b);
|
134
|
-
}
|
135
|
-
this.track('after');
|
136
|
-
};
|
137
|
-
|
138
|
-
/**
|
139
|
-
* Escape special characters in the given string.
|
140
|
-
*
|
141
|
-
* @param {String} `str` Glob pattern
|
142
|
-
* @return {String}
|
143
|
-
*/
|
144
|
-
|
145
|
-
Glob.prototype.escape = function(str) {
|
146
|
-
this.track('before escape: ');
|
147
|
-
var re = /["\\](['"]?[^"'\\]['"]?)/g;
|
148
|
-
|
149
|
-
this.pattern = str.replace(re, function($0, $1) {
|
150
|
-
var o = chars.ESC;
|
151
|
-
var ch = o && o[$1];
|
152
|
-
if (ch) {
|
153
|
-
return ch;
|
154
|
-
}
|
155
|
-
if (/[a-z]/i.test($0)) {
|
156
|
-
return $0.split('\\').join('');
|
157
|
-
}
|
158
|
-
return $0;
|
159
|
-
});
|
160
|
-
|
161
|
-
this.track('after escape: ');
|
162
|
-
};
|
163
|
-
|
164
|
-
/**
|
165
|
-
* Unescape special characters in the given string.
|
166
|
-
*
|
167
|
-
* @param {String} `str`
|
168
|
-
* @return {String}
|
169
|
-
*/
|
170
|
-
|
171
|
-
Glob.prototype.unescape = function(str) {
|
172
|
-
var re = /__([A-Z]+)_([A-Z]+)__/g;
|
173
|
-
this.pattern = str.replace(re, function($0, $1) {
|
174
|
-
return chars[$1][$0];
|
175
|
-
});
|
176
|
-
this.pattern = unesc(this.pattern);
|
177
|
-
};
|
178
|
-
|
179
|
-
/**
|
180
|
-
* Escape/unescape utils
|
181
|
-
*/
|
182
|
-
|
183
|
-
function esc(str) {
|
184
|
-
str = str.split('?').join('%~');
|
185
|
-
str = str.split('*').join('%%');
|
186
|
-
return str;
|
187
|
-
}
|
188
|
-
|
189
|
-
function unesc(str) {
|
190
|
-
str = str.split('%~').join('?');
|
191
|
-
str = str.split('%%').join('*');
|
192
|
-
return str;
|
193
|
-
}
|