| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- '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;
 
- };
 
 
  |