Fastest brace expansion lib. Typically used with file paths, but can be used with any string. Expands comma-separated values (e.g.
foo/{a,b,c}/bar
) and alphabetical or numerical ranges (e.g.{1..9}
)
node benchmark
var expand = require('braces'); expand('a/{x,y}/c{d}e') //=> ['a/x/cde', 'a/y/cde'] expand('a/b/c/{x,y}') //=> ['a/b/c/x', 'a/b/c/y'] expand('a/{x,{1..5},y}/c{d}e') //=> ['a/x/cde', 'a/1/cde', 'a/y/cde', 'a/2/cde', 'a/3/cde', 'a/4/cde', 'a/5/cde']
See the examples and tests to see more use cases.
Uses expand-range for range expansion.
expand('a{1..3}b') //=> ['a1b', 'a2b', 'a3b'] expand('a{5..8}b') //=> ['a5b', 'a6b', 'a7b', 'a8b'] expand('a{00..05}b') //=> ['a00b', 'a01b', 'a02b', 'a03b', 'a04b', 'a05b'] expand('a{01..03}b') //=> ['a01b', 'a02b', 'a03b'] expand('a{000..005}b') //=> ['a000b', 'a001b', 'a002b', 'a003b', 'a004b', 'a005b'] expand('a{a..e}b') //=> ['aab', 'abb', 'acb', 'adb', 'aeb'] expand('a{A..E}b') //=> ['aAb', 'aBb', 'aCb', 'aDb', 'aEb']
Pass a function as the last argument to customize range expansions:
var range = expand('x{a..e}y', function (str, i) { return String.fromCharCode(str) + i; }); console.log(range); //=> ['xa0y', 'xb1y', 'xc2y', 'xd3y', 'xe4y']
See expand-range for benchmarks, tests and information related to expanding ranges.
npm i braces --save
npm test
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Jon Schlinkert
Copyright (c) 2014 Jon Schlinkert
Released under the MIT license
This file was generated by verb on November 23, 2014.