summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/minimatch/browser.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/minimatch/browser.js')
-rw-r--r--deps/npm/node_modules/minimatch/browser.js64
1 files changed, 55 insertions, 9 deletions
diff --git a/deps/npm/node_modules/minimatch/browser.js b/deps/npm/node_modules/minimatch/browser.js
index 967b45c0d..7d0515920 100644
--- a/deps/npm/node_modules/minimatch/browser.js
+++ b/deps/npm/node_modules/minimatch/browser.js
@@ -1,4 +1,4 @@
-(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.minimatch = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
module.exports = minimatch
minimatch.Minimatch = Minimatch
@@ -273,6 +273,7 @@ function parse (pattern, isSub) {
var escaping = false
// ? => one single character
var patternListStack = []
+ var negativeLists = []
var plType
var stateChar
var inClass = false
@@ -373,9 +374,13 @@ function parse (pattern, isSub) {
}
plType = stateChar
- patternListStack.push({ type: plType, start: i - 1, reStart: re.length })
+ patternListStack.push({
+ type: plType,
+ start: i - 1,
+ reStart: re.length
+ })
// negation is (?:(?!js)[^/]*)
- re += stateChar === '!' ? '(?:(?!' : '(?:'
+ re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
this.debug('plType %j %j', stateChar, re)
stateChar = false
continue
@@ -389,12 +394,15 @@ function parse (pattern, isSub) {
clearStateChar()
hasMagic = true
re += ')'
- plType = patternListStack.pop().type
+ var pl = patternListStack.pop()
+ plType = pl.type
// negation is (?:(?!js)[^/]*)
// The others are (?:<pattern>)<type>
switch (plType) {
case '!':
- re += '[^/]*?)'
+ negativeLists.push(pl)
+ re += ')[^/]*?)'
+ pl.reEnd = re.length
break
case '?':
case '+':
@@ -508,7 +516,7 @@ function parse (pattern, isSub) {
// and escape any | chars that were passed through as-is for the regexp.
// Go through and escape them, taking care not to double-escape any
// | chars that were already escaped.
- for (var pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
+ for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
var tail = re.slice(pl.reStart + 3)
// maybe some even number of \, then maybe 1 \, followed by a |
tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) {
@@ -551,12 +559,49 @@ function parse (pattern, isSub) {
case '(': addPatternStart = true
}
+ // Hack to work around lack of negative lookbehind in JS
+ // A pattern like: *.!(x).!(y|z) needs to ensure that a name
+ // like 'a.xyz.yz' doesn't match. So, the first negative
+ // lookahead, has to look ALL the way ahead, to the end of
+ // the pattern.
+ for (var n = negativeLists.length - 1; n > -1; n--) {
+ var nl = negativeLists[n]
+
+ var nlBefore = re.slice(0, nl.reStart)
+ var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
+ var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)
+ var nlAfter = re.slice(nl.reEnd)
+
+ nlLast += nlAfter
+
+ // Handle nested stuff like *(*.js|!(*.json)), where open parens
+ // mean that we should *not* include the ) in the bit that is considered
+ // "after" the negated section.
+ var openParensBefore = nlBefore.split('(').length - 1
+ var cleanAfter = nlAfter
+ for (i = 0; i < openParensBefore; i++) {
+ cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
+ }
+ nlAfter = cleanAfter
+
+ var dollar = ''
+ if (nlAfter === '' && isSub !== SUBPARSE) {
+ dollar = '$'
+ }
+ var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
+ re = newRe
+ }
+
// if the re is not "" at this point, then we need to make sure
// it doesn't match against an empty path part.
// Otherwise a/* will match a/, which it should not.
- if (re !== '' && hasMagic) re = '(?=.)' + re
+ if (re !== '' && hasMagic) {
+ re = '(?=.)' + re
+ }
- if (addPatternStart) re = patternStart + re
+ if (addPatternStart) {
+ re = patternStart + re
+ }
// parsing just a piece of a larger pattern.
if (isSub === SUBPARSE) {
@@ -1110,4 +1155,5 @@ module.exports = function (xs, fn) {
return res;
};
-},{}]},{},[1]);
+},{}]},{},[1])(1)
+}); \ No newline at end of file