Projekt

Obecné

Profil

Stáhnout (9.56 KB) Statistiky
| Větev: | Revize:
1 3a515b92 cagy
# expand-brackets [![NPM version](https://img.shields.io/npm/v/expand-brackets.svg?style=flat)](https://www.npmjs.com/package/expand-brackets) [![NPM monthly downloads](https://img.shields.io/npm/dm/expand-brackets.svg?style=flat)](https://npmjs.org/package/expand-brackets)  [![NPM total downloads](https://img.shields.io/npm/dt/expand-brackets.svg?style=flat)](https://npmjs.org/package/expand-brackets) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/expand-brackets.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/expand-brackets) [![Windows Build Status](https://img.shields.io/appveyor/ci/jonschlinkert/expand-brackets.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/jonschlinkert/expand-brackets)
2
3
> Expand POSIX bracket expressions (character classes) in glob patterns.
4
5
## Install
6
7
Install with [npm](https://www.npmjs.com/):
8
9
```sh
10
$ npm install --save expand-brackets
11
```
12
13
## Usage
14
15
```js
16
var brackets = require('expand-brackets');
17
brackets(string[, options]);
18
```
19
20
**Params**
21
22
The main export is a function that takes the following parameters:
23
24
* `pattern` **{String}**: the pattern to convert
25
* `options` **{Object}**: optionally supply an options object
26
* `returns` **{String}**: returns a string that can be used to create a regex
27
28
**Example**
29
30
```js
31
console.log(brackets('[![:lower:]]'));
32
//=> '[^a-z]'
33
```
34
35
## API
36
37
### [brackets](index.js#L29)
38
39
Parses the given POSIX character class `pattern` and returns a
40
string that can be used for creating regular expressions for matching.
41
42
**Params**
43
44
* `pattern` **{String}**
45
* `options` **{Object}**
46
* `returns` **{Object}**
47
48
### [.match](index.js#L54)
49
50
Takes an array of strings and a POSIX character class pattern, and returns a new array with only the strings that matched the pattern.
51
52
**Example**
53
54
```js
55
var brackets = require('expand-brackets');
56
console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]'));
57
//=> ['a']
58
59
console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]+'));
60
//=> ['a', 'ab']
61
```
62
63
**Params**
64
65
* `arr` **{Array}**: Array of strings to match
66
* `pattern` **{String}**: POSIX character class pattern(s)
67
* `options` **{Object}**
68
* `returns` **{Array}**
69
70
### [.isMatch](index.js#L100)
71
72
Returns true if the specified `string` matches the given brackets `pattern`.
73
74
**Example**
75
76
```js
77
var brackets = require('expand-brackets');
78
79
console.log(brackets.isMatch('a.a', '[[:alpha:]].[[:alpha:]]'));
80
//=> true
81
console.log(brackets.isMatch('1.2', '[[:alpha:]].[[:alpha:]]'));
82
//=> false
83
```
84
85
**Params**
86
87
* `string` **{String}**: String to match
88
* `pattern` **{String}**: Poxis pattern
89
* `options` **{String}**
90
* `returns` **{Boolean}**
91
92
### [.matcher](index.js#L123)
93
94
Takes a POSIX character class pattern and returns a matcher function. The returned function takes the string to match as its only argument.
95
96
**Example**
97
98
```js
99
var brackets = require('expand-brackets');
100
var isMatch = brackets.matcher('[[:lower:]].[[:upper:]]');
101
102
console.log(isMatch('a.a'));
103
//=> false
104
console.log(isMatch('a.A'));
105
//=> true
106
```
107
108
**Params**
109
110
* `pattern` **{String}**: Poxis pattern
111
* `options` **{String}**
112
* `returns` **{Boolean}**
113
114
### [.makeRe](index.js#L145)
115
116
Create a regular expression from the given `pattern`.
117
118
**Example**
119
120
```js
121
var brackets = require('expand-brackets');
122
var re = brackets.makeRe('[[:alpha:]]');
123
console.log(re);
124
//=> /^(?:[a-zA-Z])$/
125
```
126
127
**Params**
128
129
* `pattern` **{String}**: The pattern to convert to regex.
130
* `options` **{Object}**
131
* `returns` **{RegExp}**
132
133
### [.create](index.js#L187)
134
135
Parses the given POSIX character class `pattern` and returns an object with the compiled `output` and optional source `map`.
136
137
**Example**
138
139
```js
140
var brackets = require('expand-brackets');
141
console.log(brackets('[[:alpha:]]'));
142
// { options: { source: 'string' },
143
//   input: '[[:alpha:]]',
144
//   state: {},
145
//   compilers:
146
//    { eos: [Function],
147
//      noop: [Function],
148
//      bos: [Function],
149
//      not: [Function],
150
//      escape: [Function],
151
//      text: [Function],
152
//      posix: [Function],
153
//      bracket: [Function],
154
//      'bracket.open': [Function],
155
//      'bracket.inner': [Function],
156
//      'bracket.literal': [Function],
157
//      'bracket.close': [Function] },
158
//   output: '[a-zA-Z]',
159
//   ast:
160
//    { type: 'root',
161
//      errors: [],
162
//      nodes: [ [Object], [Object], [Object] ] },
163
//   parsingErrors: [] }
164
```
165
166
**Params**
167
168
* `pattern` **{String}**
169
* `options` **{Object}**
170
* `returns` **{Object}**
171
172
## Options
173
174
### options.sourcemap
175
176
Generate a source map for the given pattern.
177
178
**Example**
179
180
```js
181
var res = brackets('[:alpha:]', {sourcemap: true});
182
183
console.log(res.map);
184
// { version: 3,
185
//   sources: [ 'brackets' ],
186
//   names: [],
187
//   mappings: 'AAAA,MAAS',
188
//   sourcesContent: [ '[:alpha:]' ] }
189
```
190
191
### POSIX Character classes
192
193
The following named POSIX bracket expressions are supported:
194
195
* `[:alnum:]`: Alphanumeric characters (`a-zA-Z0-9]`)
196
* `[:alpha:]`: Alphabetic characters (`a-zA-Z]`)
197
* `[:blank:]`: Space and tab (`[ t]`)
198
* `[:digit:]`: Digits (`[0-9]`)
199
* `[:lower:]`: Lowercase letters (`[a-z]`)
200
* `[:punct:]`: Punctuation and symbols. (`[!"#$%&'()*+, -./:;<=>?@ [\]^_``{|}~]`)
201
* `[:upper:]`: Uppercase letters (`[A-Z]`)
202
* `[:word:]`: Word characters (letters, numbers and underscores) (`[A-Za-z0-9_]`)
203
* `[:xdigit:]`: Hexadecimal digits (`[A-Fa-f0-9]`)
204
205
See [posix-character-classes](https://github.com/jonschlinkert/posix-character-classes) for more details.
206
207
**Not supported**
208
209
* [equivalence classes](https://www.gnu.org/software/gawk/manual/html_node/Bracket-Expressions.html) are not supported
210
* [POSIX.2 collating symbols](https://www.gnu.org/software/gawk/manual/html_node/Bracket-Expressions.html) are not supported
211
212
## Changelog
213
214
### v2.0.0
215
216
**Breaking changes**
217
218
* The main export now returns the compiled string, instead of the object returned from the compiler
219
220
**Added features**
221
222
* Adds a `.create` method to do what the main function did before v2.0.0
223
224
### v0.2.0
225
226
In addition to performance and matching improvements, the v0.2.0 refactor adds complete POSIX character class support, with the exception of equivalence classes and POSIX.2 collating symbols which are not relevant to node.js usage.
227
228
**Added features**
229
230
* parser is exposed, so that expand-brackets parsers can be used by upstream parsers (like [micromatch](https://github.com/jonschlinkert/micromatch))
231
* compiler is exposed, so that expand-brackets compilers can be used by upstream compilers
232
* source maps
233
234
**source map example**
235
236
```js
237
var brackets = require('expand-brackets');
238
var res = brackets('[:alpha:]');
239
console.log(res.map);
240
241
{ version: 3,
242
     sources: [ 'brackets' ],
243
     names: [],
244
     mappings: 'AAAA,MAAS',
245
     sourcesContent: [ '[:alpha:]' ] }
246
```
247
248
## About
249
250
### Related projects
251
252
* [braces](https://www.npmjs.com/package/braces): Fast, comprehensive, bash-like brace expansion implemented in JavaScript. Complete support for the Bash 4.3 braces… [more](https://github.com/jonschlinkert/braces) | [homepage](https://github.com/jonschlinkert/braces "Fast, comprehensive, bash-like brace expansion implemented in JavaScript. Complete support for the Bash 4.3 braces specification, without sacrificing speed.")
253
* [extglob](https://www.npmjs.com/package/extglob): Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob… [more](https://github.com/jonschlinkert/extglob) | [homepage](https://github.com/jonschlinkert/extglob "Extended glob support for JavaScript. Adds (almost) the expressive power of regular expressions to glob patterns.")
254
* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/jonschlinkert/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.")
255
* [nanomatch](https://www.npmjs.com/package/nanomatch): Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash… [more](https://github.com/jonschlinkert/nanomatch) | [homepage](https://github.com/jonschlinkert/nanomatch "Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)")
256
257
### Contributing
258
259
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
260
261
### Contributors
262
263
| **Commits** | **Contributor**<br/> | 
264
| --- | --- |
265
| 66 | [jonschlinkert](https://github.com/jonschlinkert) |
266
| 2 | [MartinKolarik](https://github.com/MartinKolarik) |
267
| 2 | [es128](https://github.com/es128) |
268
| 1 | [eush77](https://github.com/eush77) |
269
270
### Building docs
271
272
_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_
273
274
To generate the readme and API documentation with [verb](https://github.com/verbose/verb):
275
276
```sh
277
$ npm install -g verb verb-generate-readme && verb
278
```
279
280
### Running tests
281
282
Install dev dependencies:
283
284
```sh
285
$ npm install -d && npm test
286
```
287
288
### Author
289
290
**Jon Schlinkert**
291
292
* [github/jonschlinkert](https://github.com/jonschlinkert)
293
* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
294
295
### License
296
297
Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert).
298
Released under the [MIT license](https://github.com/jonschlinkert/expand-brackets/blob/master/LICENSE).
299
300
***
301
302
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.2.0, on December 12, 2016._