forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathglobmatch.js
More file actions
1 lines (1 loc) · 11.1 KB
/
Copy pathglobmatch.js
File metadata and controls
1 lines (1 loc) · 11.1 KB
1
define(function(r,exports,module,platform){function fnmatch(filepath,glob){var matchOptions={dot:!0,noext:!0};return"/"!==filepath[filepath.length-1]&&(matchOptions.matchBase=!0),minimatch(filepath,glob=glob.replace(/\*\*/g,"{*,**/**/**}"),matchOptions)}module.exports=fnmatch,minimatch.Minimatch=Minimatch;var LRU=function LRUCache(){var cache={},cnt=0;this.set=function(k,v){++cnt>=100&&(cache={}),cache[k]=v},this.get=function(k){return cache[k]}},cache=minimatch.cache=new LRU({max:100}),GLOBSTAR=minimatch.GLOBSTAR=Minimatch.GLOBSTAR={},sigmund=function sigmund(obj){return JSON.stringify(obj)},path_basename=function(f){var e=(f=f.split(/[\/\\]/)).pop();return e||(e=f.pop()),e},qmark="[^/]",star=qmark+"*?",twoStarDot="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",twoStarNoDot="(?:(?!(?:\\/|^)\\.).)*?",reSpecials=charSet("().*{}+?[]^$\\!");function charSet(s){return s.split("").reduce(function(set,c){return set[c]=!0,set},{})}var slashSplit=/\/+/;function monkeyPatch(){var desc=Object.getOwnPropertyDescriptor(String.prototype,"match"),orig=desc.value;desc.value=function(p){return p instanceof Minimatch?p.match(this):orig.call(this,p)},Object.defineProperty(String.prototype,desc)}function filter(pattern,options){return options=options||{},function(p,i,list){return minimatch(p,pattern,options)}}function ext(a,b){a=a||{},b=b||{};var t={};return Object.keys(b).forEach(function(k){t[k]=b[k]}),Object.keys(a).forEach(function(k){t[k]=a[k]}),t}function minimatch(p,pattern,options){if("string"!=typeof pattern)throw new TypeError("glob pattern string required");return options||(options={}),!(!options.nocomment&&"#"===pattern.charAt(0))&&(""===pattern.trim()?""===p:new Minimatch(pattern,options).match(p))}function Minimatch(pattern,options){if(!(this instanceof Minimatch))return new Minimatch(pattern,options,cache);if("string"!=typeof pattern)throw new TypeError("glob pattern string required");options||(options={}),pattern=pattern.trim(),"win32"===platform&&(pattern=pattern.split("\\").join("/"));var cacheKey=pattern+"\n"+sigmund(options),cached=minimatch.cache.get(cacheKey);if(cached)return cached;minimatch.cache.set(cacheKey,this),this.options=options,this.set=[],this.pattern=pattern,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}function make(){if(!this._made){var pattern=this.pattern,options=this.options;if(options.nocomment||"#"!==pattern.charAt(0))if(pattern){this.parseNegate();var set=this.globSet=this.braceExpand();options.debug&&console.error(this.pattern,set),set=this.globParts=set.map(function(s){return s.split(slashSplit)}),options.debug&&console.error(this.pattern,set),set=set.map(function(s,si,set){return s.map(this.parse,this)},this),options.debug&&console.error(this.pattern,set),set=set.filter(function(s){return-1===s.indexOf(!1)}),options.debug&&console.error(this.pattern,set),this.set=set}else this.empty=!0;else this.comment=!0}}function parseNegate(){var pattern=this.pattern,negate=!1,options,negateOffset=0;if(!this.options.nonegate){for(var i=0,l=pattern.length;i<l&&"!"===pattern.charAt(i);i++)negate=!negate,negateOffset++;negateOffset&&(this.pattern=pattern.substr(negateOffset)),this.negate=negate}}function braceExpand(pattern,options){if(options=options||this.options,void 0===(pattern=void 0===pattern?this.pattern:pattern))throw new Error("undefined pattern");if(options.nobrace||!pattern.match(/\{.*\}/))return[pattern];var escaping=!1;if("{"!==pattern.charAt(0)){for(var prefix=null,i=0,l=pattern.length;i<l;i++){var c;if("\\"===(c=pattern.charAt(i)))escaping=!escaping;else if("{"===c&&!escaping){prefix=pattern.substr(0,i);break}}return null===prefix?[pattern]:braceExpand(pattern.substr(i),options).map(function(t){return prefix+t});var tail}var numset=pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/);if(numset){for(var suf=braceExpand(pattern.substr(numset[0].length),options),start=+numset[1],end=+numset[2],inc=start>end?-1:1,set=[],i=start;i!=end+inc;i+=inc)for(var ii=0,ll=suf.length;ii<ll;ii++)set.push(i+suf[ii]);return set}var i=1,depth=1,set=[],member="",sawEnd=!1,escaping=!1;function addMember(){set.push(member),member=""}FOR:for(i=1,l=pattern.length;i<l;i++){var c=pattern.charAt(i);if(escaping)escaping=!1,member+="\\"+c;else switch(c){case"\\":escaping=!0;continue;case"{":depth++,member+="{";continue;case"}":if(0===--depth){addMember(),i++;break FOR}member+=c;continue;case",":1===depth?addMember():member+=c;continue;default:member+=c;continue}}if(0!==depth)return braceExpand("\\"+pattern,options);var suf=braceExpand(pattern.substr(i),options),addBraces=1===set.length;set=(set=set.map(function(p){return braceExpand(p,options)})).reduce(function(l,r){return l.concat(r)}),addBraces&&(set=set.map(function(s){return"{"+s+"}"}));for(var ret=[],i=0,l=set.length;i<l;i++)for(var ii=0,ll=suf.length;ii<ll;ii++)ret.push(set[i]+suf[ii]);return ret}minimatch.monkeyPatch=monkeyPatch,minimatch.filter=filter,minimatch.defaults=function(def){if(!def||!Object.keys(def).length)return minimatch;var orig=minimatch,m=function minimatch(p,pattern,options){return orig.minimatch(p,pattern,ext(def,options))};return m.Minimatch=function Minimatch(pattern,options){return new orig.Minimatch(pattern,ext(def,options))},m},Minimatch.defaults=function(def){return def&&Object.keys(def).length?minimatch.defaults(def).Minimatch:Minimatch},Minimatch.prototype.make=make,Minimatch.prototype.parseNegate=parseNegate,minimatch.braceExpand=function(pattern,options){return new Minimatch(pattern,options).braceExpand()},Minimatch.prototype.braceExpand=braceExpand,Minimatch.prototype.parse=parse;var SUBPARSE={};function parse(pattern,isSub){var options=this.options;if(!options.noglobstar&&"**"===pattern)return GLOBSTAR;if(""===pattern)return"";var re="",hasMagic=!!options.nocase,escaping=!1,patternListStack=[],plType,stateChar,inClass=!1,reClassStart=-1,classStart=-1,patternStart="."===pattern.charAt(0)?"":options.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",pl;function clearStateChar(){if(stateChar){switch(stateChar){case"*":re+=star,hasMagic=!0;break;case"?":re+=qmark,hasMagic=!0;break;default:re+="\\"+stateChar}stateChar=!1}}for(var i=0,len=pattern.length,c;i<len&&(c=pattern.charAt(i));i++)if(options.debug&&console.error("%s\t%s %s %j",pattern,i,re,c),escaping&&reSpecials[c])re+="\\"+c,escaping=!1;else switch(c){case"/":return!1;case"\\":clearStateChar(),escaping=!0;continue;case"?":case"*":case"+":case"@":case"!":if(options.debug&&console.error("%s\t%s %s %j <-- stateChar",pattern,i,re,c),inClass){"!"===c&&i===classStart+1&&(c="^"),re+=c;continue}clearStateChar(),stateChar=c,options.noext&&clearStateChar();continue;case"(":if(inClass){re+="(";continue}if(!stateChar){re+="\\(";continue}plType=stateChar,patternListStack.push({type:plType,start:i-1,reStart:re.length}),re+="!"===stateChar?"(?:(?!":"(?:",stateChar=!1;continue;case")":if(inClass||!patternListStack.length){re+="\\)";continue}switch(hasMagic=!0,re+=")",plType=patternListStack.pop().type){case"!":re+="[^/]*?)";break;case"?":case"+":case"*":re+=plType}continue;case"|":if(inClass||!patternListStack.length||escaping){re+="\\|",escaping=!1;continue}re+="|";continue;case"[":if(clearStateChar(),inClass){re+="\\"+c;continue}inClass=!0,classStart=i,reClassStart=re.length,re+=c;continue;case"]":if(i===classStart+1||!inClass){re+="\\"+c,escaping=!1;continue}hasMagic=!0,inClass=!1,re+=c;continue;default:clearStateChar(),escaping?escaping=!1:!reSpecials[c]||"^"===c&&inClass||(re+="\\"),re+=c}if(inClass){var cs=pattern.substr(classStart+1),sp=this.parse(cs,SUBPARSE);re=re.substr(0,reClassStart)+"\\["+sp[0],hasMagic=hasMagic||sp[1]}for(;pl=patternListStack.pop();){var tail=re.slice(pl.reStart+3);tail=tail.replace(/((?:\\{2})*)(\\?)\|/g,function(_,$1,$2){return $2||($2="\\"),$1+$1+$2+"|"});var t="*"===pl.type?star:"?"===pl.type?qmark:"\\"+pl.type;hasMagic=!0,re=re.slice(0,pl.reStart)+t+"\\("+tail}clearStateChar(),escaping&&(re+="\\\\");var addPatternStart=!1;switch(re.charAt(0)){case".":case"[":case"(":addPatternStart=!0}if(""!==re&&hasMagic&&(re="(?=.)"+re),addPatternStart&&(re=patternStart+re),isSub===SUBPARSE)return[re,hasMagic];if(!hasMagic)return globUnescape(pattern);var flags=options.nocase?"i":"",regExp=new RegExp("^"+re+"$",flags);return regExp._glob=pattern,regExp._src=re,regExp}function makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;var set=this.set;if(!set.length)return this.regexp=!1;var options=this.options,twoStar=options.noglobstar?star:options.dot?twoStarDot:twoStarNoDot,flags=options.nocase?"i":"",re=set.map(function(pattern){return pattern.map(function(p){return p===GLOBSTAR?twoStar:"string"==typeof p?regExpEscape(p):p._src}).join("\\/")}).join("|");re="^(?:"+re+")$",this.negate&&(re="^(?!"+re+").*$");try{return this.regexp=new RegExp(re,flags)}catch(ex){return this.regexp=!1}}function match(f,partial){if(this.comment)return!1;if(this.empty)return""===f;if("/"===f&&partial)return!0;var options=this.options;"win32"===platform&&(f=f.split("\\").join("/")),f=f.split(slashSplit),options.debug&&console.error(this.pattern,"split",f);for(var set=this.set,i=0,l=set.length;i<l;i++){var pattern=set[i],hit;if(this.matchOne(f,pattern,partial))return!!options.flipNegate||!this.negate}return!options.flipNegate&&this.negate}function globUnescape(s){return s.replace(/\\(.)/g,"$1")}function regExpEscape(s){return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}minimatch.makeRe=function(pattern,options){return new Minimatch(pattern,options||{}).makeRe()},Minimatch.prototype.makeRe=makeRe,minimatch.match=function(list,pattern,options){var mm=new Minimatch(pattern,options);return list=list.filter(function(f){return mm.match(f)}),options.nonull&&!list.length&&list.push(pattern),list},Minimatch.prototype.match=match,Minimatch.prototype.matchOne=function(file,pattern,partial){var options=this.options,emptyFileEnd;options.debug&&console.error("matchOne",{this:this,file:file,pattern:pattern}),options.matchBase&&1===pattern.length&&(file=path_basename(file.join("/")).split("/")),options.debug&&console.error("matchOne",file.length,pattern.length);for(var fi=0,pi=0,fl=file.length,pl=pattern.length;fi<fl&&pi<pl;fi++,pi++){options.debug&&console.error("matchOne loop");var p=pattern[pi],f=file[fi],hit;if(options.debug&&console.error(pattern,p,f),!1===p)return!1;if(p===GLOBSTAR){options.debug&&console.error("GLOBSTAR",[pattern,p,f]);var fr=fi,pr=pi+1;if(pr===pl){for(options.debug&&console.error("** at the end");fi<fl;fi++)if("."===file[fi]||".."===file[fi]||!options.dot&&"."===file[fi].charAt(0))return!1;return!0}WHILE:for(;fr<fl;){var swallowee=file[fr];if(options.debug&&console.error("\nglobstar while",file,fr,pattern,pr,swallowee),this.matchOne(file.slice(fr),pattern.slice(pr),partial))return options.debug&&console.error("globstar found match!",fr,fl,swallowee),!0;if("."===swallowee||".."===swallowee||!options.dot&&"."===swallowee.charAt(0)){options.debug&&console.error("dot detected!",file,fr,pattern,pr);break WHILE}options.debug&&console.error("globstar swallow a segment, and continue"),fr++}return!(!partial||fr!==fl)}if("string"==typeof p?(hit=options.nocase?f.toLowerCase()===p.toLowerCase():f===p,options.debug&&console.error("string match",p,f,hit)):(hit=f.match(p),options.debug&&console.error("pattern match",p,f,hit)),!hit)return!1}if(fi===fl&&pi===pl)return!0;if(fi===fl)return partial;if(pi===pl)return fi===fl-1&&""===file[fi];throw new Error("wtf?")}});