forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
var isGlob = require('is-glob');
 | 
						|
var pathPosixDirname = require('path').posix.dirname;
 | 
						|
var isWin32 = require('os').platform() === 'win32';
 | 
						|
 | 
						|
var slash = '/';
 | 
						|
var backslash = /\\/g;
 | 
						|
var enclosure = /[\{\[].*[\}\]]$/;
 | 
						|
var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/;
 | 
						|
var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g;
 | 
						|
 | 
						|
/**
 | 
						|
 * @param {string} str
 | 
						|
 * @param {Object} opts
 | 
						|
 * @param {boolean} [opts.flipBackslashes=true]
 | 
						|
 * @returns {string}
 | 
						|
 */
 | 
						|
module.exports = function globParent(str, opts) {
 | 
						|
  var options = Object.assign({ flipBackslashes: true }, opts);
 | 
						|
 | 
						|
  // flip windows path separators
 | 
						|
  if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {
 | 
						|
    str = str.replace(backslash, slash);
 | 
						|
  }
 | 
						|
 | 
						|
  // special case for strings ending in enclosure containing path separator
 | 
						|
  if (enclosure.test(str)) {
 | 
						|
    str += slash;
 | 
						|
  }
 | 
						|
 | 
						|
  // preserves full path in case of trailing path separator
 | 
						|
  str += 'a';
 | 
						|
 | 
						|
  // remove path parts that are globby
 | 
						|
  do {
 | 
						|
    str = pathPosixDirname(str);
 | 
						|
  } while (isGlob(str) || globby.test(str));
 | 
						|
 | 
						|
  // remove escape chars and return result
 | 
						|
  return str.replace(escaped, '$1');
 | 
						|
};
 |