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