aboutsummaryrefslogtreecommitdiff
path: root/node_modules/glob-parent
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/glob-parent')
-rw-r--r--node_modules/glob-parent/.npmignore4
-rw-r--r--node_modules/glob-parent/.travis.yml8
-rw-r--r--node_modules/glob-parent/README.md66
-rw-r--r--node_modules/glob-parent/index.js20
-rw-r--r--node_modules/glob-parent/package.json19
-rw-r--r--node_modules/glob-parent/test.js28
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');
- });
-});