You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
763 B
24 lines
763 B
'use strict'; |
|
|
|
var path = require('path'); |
|
var isglob = require('is-glob'); |
|
var pathDirname = require('path-dirname'); |
|
var isWin32 = require('os').platform() === 'win32'; |
|
|
|
module.exports = function globParent(str) { |
|
// flip windows path separators |
|
if (isWin32 && str.indexOf('/') < 0) str = str.split('\\').join('/'); |
|
|
|
// special case for strings ending in enclosure containing path separator |
|
if (/[\{\[].*[\/]*.*[\}\]]$/.test(str)) str += '/'; |
|
|
|
// preserves full path in case of trailing path separator |
|
str += 'a'; |
|
|
|
// remove path parts that are globby |
|
do {str = pathDirname.posix(str)} |
|
while (isglob(str) || /(^|[^\\])([\{\[]|\([^\)]+$)/.test(str)); |
|
|
|
// remove escape chars and return result |
|
return str.replace(/\\([\*\?\|\[\]\(\)\{\}])/g, '$1'); |
|
};
|
|
|