diff options
Diffstat (limited to 'node_modules/glob-parent')
-rw-r--r-- | node_modules/glob-parent/.npmignore | 4 | ||||
-rw-r--r-- | node_modules/glob-parent/.travis.yml | 8 | ||||
-rw-r--r-- | node_modules/glob-parent/README.md | 66 | ||||
-rw-r--r-- | node_modules/glob-parent/index.js | 20 | ||||
-rw-r--r-- | node_modules/glob-parent/package.json | 19 | ||||
-rw-r--r-- | node_modules/glob-parent/test.js | 28 |
6 files changed, 96 insertions, 49 deletions
diff --git a/node_modules/glob-parent/.npmignore b/node_modules/glob-parent/.npmignore deleted file mode 100644 index 33e391f0e..000000000 --- a/node_modules/glob-parent/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -.DS_Store -npm-debug.log -coverage diff --git a/node_modules/glob-parent/.travis.yml b/node_modules/glob-parent/.travis.yml deleted file mode 100644 index 18fc42f69..000000000 --- a/node_modules/glob-parent/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js -node_js: - - "4" - - "iojs-v3" - - "iojs-v2" - - "iojs-v1" - - "0.12" - - "0.10" diff --git a/node_modules/glob-parent/README.md b/node_modules/glob-parent/README.md index ff5310d3b..3bec5c78e 100644 --- a/node_modules/glob-parent/README.md +++ b/node_modules/glob-parent/README.md @@ -11,6 +11,8 @@ Usage npm install glob-parent --save ``` +**Examples** + ```js var globParent = require('glob-parent'); @@ -31,9 +33,70 @@ globParent('path/**/*'); // 'path' globParent('path/foo/bar.js'); // 'path/foo' globParent('path/foo/'); // 'path/foo' globParent('path/foo'); // 'path' (see issue #3 for details) +``` + +## Escaping + +The following characters have special significance in glob patterns and must be escaped if you want them to be treated as regular path characters: + +- `?` (question mark) +- `*` (star) +- `|` (pipe) +- `(` (opening parenthesis) +- `)` (closing parenthesis) +- `{` (opening curly brace) +- `}` (closing curly brace) +- `[` (opening bracket) +- `]` (closing bracket) + +**Example** + +```js +globParent('foo/[bar]/') // 'foo' +globParent('foo/\\[bar]/') // 'foo/[bar]' +``` + +## Limitations + +#### Braces & Brackets +This library attempts a quick and imperfect method of determining which path +parts have glob magic without fully parsing/lexing the pattern. There are some +advanced use cases that can trip it up, such as nested braces where the outer +pair is escaped and the inner one contains a path separator. If you find +yourself in the unlikely circumstance of being affected by this or need to +ensure higher-fidelity glob handling in your library, it is recommended that you +pre-process your input with [expand-braces] and/or [expand-brackets]. +#### Windows +Backslashes are not valid path separators for globs. If a path with backslashes +is provided anyway, for simple cases, glob-parent will replace the path +separator for you and return the non-glob parent path (now with +forward-slashes, which are still valid as Windows path separators). + +This cannot be used in conjunction with escape characters. + +```js +// BAD +globParent('C:\\Program Files \\(x86\\)\\*.ext') // 'C:/Program Files /(x86/)' + +// GOOD +globParent('C:/Program Files\\(x86\\)/*.ext') // 'C:/Program Files (x86)' ``` +If you are using escape characters for a pattern without path parts (i.e. +relative to `cwd`), prefix with `./` to avoid confusing glob-parent. + +```js +// BAD +globParent('foo \\[bar]') // 'foo ' +globParent('foo \\[bar]*') // 'foo ' + +// GOOD +globParent('./foo \\[bar]') // 'foo [bar]' +globParent('./foo \\[bar]*') // '.' +``` + + Change Log ---------- [See release notes page on GitHub](https://github.com/es128/glob-parent/releases) @@ -41,3 +104,6 @@ Change Log License ------- [ISC](https://raw.github.com/es128/glob-parent/master/LICENSE) + +[expand-braces]: https://github.com/jonschlinkert/expand-braces +[expand-brackets]: https://github.com/jonschlinkert/expand-brackets diff --git a/node_modules/glob-parent/index.js b/node_modules/glob-parent/index.js index 61615f1ac..3a14a539f 100644 --- a/node_modules/glob-parent/index.js +++ b/node_modules/glob-parent/index.js @@ -2,9 +2,23 @@ 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) { - str += 'a'; // preserves full path in case of trailing path separator - do {str = path.dirname(str)} while (isglob(str)); - return 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'); }; diff --git a/node_modules/glob-parent/package.json b/node_modules/glob-parent/package.json index 5499007fb..e0023857a 100644 --- a/node_modules/glob-parent/package.json +++ b/node_modules/glob-parent/package.json @@ -1,10 +1,11 @@ { "name": "glob-parent", - "version": "2.0.0", - "description": "Strips glob magic from a string to provide the parent path", + "version": "3.1.0", + "description": "Strips glob magic from a string to provide the parent directory path", "main": "index.js", "scripts": { - "test": "istanbul cover _mocha && cat ./coverage/lcov.info | coveralls" + "test": "istanbul test node_modules/mocha/bin/_mocha", + "ci-test": "istanbul cover _mocha && cat ./coverage/lcov.info | coveralls" }, "repository": { "type": "git", @@ -15,17 +16,23 @@ "parent", "strip", "path", + "dirname", "directory", - "base" + "base", + "wildcard" ], - "author": "Elan Shanker", + "files": [ + "index.js" + ], + "author": "Elan Shanker (https://github.com/es128)", "license": "ISC", "bugs": { "url": "https://github.com/es128/glob-parent/issues" }, "homepage": "https://github.com/es128/glob-parent", "dependencies": { - "is-glob": "^2.0.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "devDependencies": { "coveralls": "^2.11.2", diff --git a/node_modules/glob-parent/test.js b/node_modules/glob-parent/test.js deleted file mode 100644 index 01156d2ff..000000000 --- a/node_modules/glob-parent/test.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -var gp = require('./'); -var assert = require('assert'); - -describe('glob-parent', function() { - it('should strip glob magic to return parent path', function() { - assert.equal(gp('path/to/*.js'), 'path/to'); - assert.equal(gp('/root/path/to/*.js'), '/root/path/to'); - assert.equal(gp('/*.js'), '/'); - assert.equal(gp('*.js'), '.'); - assert.equal(gp('**/*.js'), '.'); - assert.equal(gp('path/{to,from}'), 'path'); - assert.equal(gp('path/!(to|from)'), 'path'); - assert.equal(gp('path/?(to|from)'), 'path'); - assert.equal(gp('path/+(to|from)'), 'path'); - assert.equal(gp('path/*(to|from)'), 'path'); - assert.equal(gp('path/@(to|from)'), 'path'); - assert.equal(gp('path/**/*'), 'path'); - assert.equal(gp('path/**/subdir/foo.*'), 'path'); - }); - - it('should return parent dirname from non-glob paths', function() { - assert.equal(gp('path/foo/bar.js'), 'path/foo'); - assert.equal(gp('path/foo/'), 'path/foo'); - assert.equal(gp('path/foo'), 'path'); - }); -}); |