.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / glob-parent / README.md
1 <p align="center">
2   <a href="https://gulpjs.com">
3     <img height="257" width="114" src="https://raw.githubusercontent.com/gulpjs/artwork/master/gulp-2x.png">
4   </a>
5 </p>
6
7 # glob-parent
8
9 [![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Azure Pipelines Build Status][azure-pipelines-image]][azure-pipelines-url] [![Travis Build Status][travis-image]][travis-url] [![AppVeyor Build Status][appveyor-image]][appveyor-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url]
10
11 Extract the non-magic parent path from a glob string.
12
13 ## Usage
14
15 ```js
16 var globParent = require('glob-parent');
17
18 globParent('path/to/*.js'); // 'path/to'
19 globParent('/root/path/to/*.js'); // '/root/path/to'
20 globParent('/*.js'); // '/'
21 globParent('*.js'); // '.'
22 globParent('**/*.js'); // '.'
23 globParent('path/{to,from}'); // 'path'
24 globParent('path/!(to|from)'); // 'path'
25 globParent('path/?(to|from)'); // 'path'
26 globParent('path/+(to|from)'); // 'path'
27 globParent('path/*(to|from)'); // 'path'
28 globParent('path/@(to|from)'); // 'path'
29 globParent('path/**/*'); // 'path'
30
31 // if provided a non-glob path, returns the nearest dir
32 globParent('path/foo/bar.js'); // 'path/foo'
33 globParent('path/foo/'); // 'path/foo'
34 globParent('path/foo'); // 'path' (see issue #3 for details)
35 ```
36
37 ## API
38
39 ### `globParent(maybeGlobString, [options])`
40
41 Takes a string and returns the part of the path before the glob begins. Be aware of Escaping rules and Limitations below.
42
43 #### options
44
45 ```js
46 {
47   // Disables the automatic conversion of slashes for Windows
48   flipBackslashes: true
49 }
50 ```
51
52 ## Escaping
53
54 The following characters have special significance in glob patterns and must be escaped if you want them to be treated as regular path characters:
55
56 - `?` (question mark) unless used as a path segment alone
57 - `*` (asterisk)
58 - `|` (pipe)
59 - `(` (opening parenthesis)
60 - `)` (closing parenthesis)
61 - `{` (opening curly brace)
62 - `}` (closing curly brace)
63 - `[` (opening bracket)
64 - `]` (closing bracket)
65
66 **Example**
67
68 ```js
69 globParent('foo/[bar]/') // 'foo'
70 globParent('foo/\\[bar]/') // 'foo/[bar]'
71 ```
72
73 ## Limitations
74
75 ### Braces & Brackets
76 This library attempts a quick and imperfect method of determining which path
77 parts have glob magic without fully parsing/lexing the pattern. There are some
78 advanced use cases that can trip it up, such as nested braces where the outer
79 pair is escaped and the inner one contains a path separator. If you find
80 yourself in the unlikely circumstance of being affected by this or need to
81 ensure higher-fidelity glob handling in your library, it is recommended that you
82 pre-process your input with [expand-braces] and/or [expand-brackets].
83
84 ### Windows
85 Backslashes are not valid path separators for globs. If a path with backslashes
86 is provided anyway, for simple cases, glob-parent will replace the path
87 separator for you and return the non-glob parent path (now with
88 forward-slashes, which are still valid as Windows path separators).
89
90 This cannot be used in conjunction with escape characters.
91
92 ```js
93 // BAD
94 globParent('C:\\Program Files \\(x86\\)\\*.ext') // 'C:/Program Files /(x86/)'
95
96 // GOOD
97 globParent('C:/Program Files\\(x86\\)/*.ext') // 'C:/Program Files (x86)'
98 ```
99
100 If you are using escape characters for a pattern without path parts (i.e.
101 relative to `cwd`), prefix with `./` to avoid confusing glob-parent.
102
103 ```js
104 // BAD
105 globParent('foo \\[bar]') // 'foo '
106 globParent('foo \\[bar]*') // 'foo '
107
108 // GOOD
109 globParent('./foo \\[bar]') // 'foo [bar]'
110 globParent('./foo \\[bar]*') // '.'
111 ```
112
113 ## License
114
115 ISC
116
117 [expand-braces]: https://github.com/jonschlinkert/expand-braces
118 [expand-brackets]: https://github.com/jonschlinkert/expand-brackets
119
120 [downloads-image]: https://img.shields.io/npm/dm/glob-parent.svg
121 [npm-url]: https://www.npmjs.com/package/glob-parent
122 [npm-image]: https://img.shields.io/npm/v/glob-parent.svg
123
124 [azure-pipelines-url]: https://dev.azure.com/gulpjs/gulp/_build/latest?definitionId=2&branchName=master
125 [azure-pipelines-image]: https://dev.azure.com/gulpjs/gulp/_apis/build/status/glob-parent?branchName=master
126
127 [travis-url]: https://travis-ci.org/gulpjs/glob-parent
128 [travis-image]: https://img.shields.io/travis/gulpjs/glob-parent.svg?label=travis-ci
129
130 [appveyor-url]: https://ci.appveyor.com/project/gulpjs/glob-parent
131 [appveyor-image]: https://img.shields.io/appveyor/ci/gulpjs/glob-parent.svg?label=appveyor
132
133 [coveralls-url]: https://coveralls.io/r/gulpjs/glob-parent
134 [coveralls-image]: https://img.shields.io/coveralls/gulpjs/glob-parent/master.svg
135
136 [gitter-url]: https://gitter.im/gulpjs/gulp
137 [gitter-image]: https://badges.gitter.im/gulpjs/gulp.svg