| Server IP : 68.183.124.220 / Your IP : 216.73.217.137 Web Server : Apache/2.4.18 (Ubuntu) System : Linux Sandbox-A 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : gavin ( 1000) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/gavin/workspace/readjs/node_modules/glob2base/ |
Upload File : |
'use strict';
var path = require('path');
var findIndex = require('find-index');
var flattenGlob = function(arr){
var out = [];
var flat = true;
for(var i = 0; i < arr.length; i++) {
if (typeof arr[i] !== 'string') {
flat = false;
break;
}
out.push(arr[i]);
}
// last one is a file or specific dir
// so we pop it off
if (flat) {
out.pop();
}
return out;
};
var flattenExpansion = function(set) {
var first = set[0];
var toCompare = set.slice(1);
// find index where the diff is
var idx = findIndex(first, function(v, idx){
if (typeof v !== 'string') {
return true;
}
var matched = toCompare.every(function(arr){
return v === arr[idx];
});
return !matched;
});
return first.slice(0, idx);
};
var setToBase = function(set) {
// normal something/*.js
if (set.length <= 1) {
return flattenGlob(set[0]);
}
// has expansion
return flattenExpansion(set);
};
module.exports = function(glob) {
var set = glob.minimatch.set;
var baseParts = setToBase(set);
var basePath = path.normalize(baseParts.join(path.sep))+path.sep;
return basePath;
};