expand-range NPM version NPM downloads Build Status

Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. See the benchmarks. Used by micromatch.

Install

Install with npm:

  1. $ npm install expand-range --save

Wraps [fill-range] to do range expansion using .. separated strings. See [fill-range] for the full list of options and features.

Example usage

  1. var expand = require('expand-range');

Params

  1. expand(start, stop, increment);
  • start: the number or letter to start with
  • end: the number or letter to end with
  • increment: optionally pass the increment to use. works for letters or numbers

Examples

  1. expand('a..e')
  2. //=> ['a', 'b', 'c', 'd', 'e']
  3. expand('a..e..2')
  4. //=> ['a', 'c', 'e']
  5. expand('A..E..2')
  6. //=> ['A', 'C', 'E']
  7. expand('1..3')
  8. //=> ['1', '2', '3']
  9. expand('0..-5')
  10. //=> [ '0', '-1', '-2', '-3', '-4', '-5' ]
  11. expand('-9..9..3')
  12. //=> [ '-9', '-6', '-3', '0', '3', '6', '9' ])
  13. expand('-1..-10..-2')
  14. //=> [ '-1', '-3', '-5', '-7', '-9' ]
  15. expand('1..10..2')
  16. //=> [ '1', '3', '5', '7', '9' ]

Custom function

Optionally pass a custom function as the second argument:

  1. expand('a..e', function (val, isNumber, pad, i) {
  2. if (!isNumber) {
  3. return String.fromCharCode(val) + i;
  4. }
  5. return val;
  6. });
  7. //=> ['a0', 'b1', 'c2', 'd3', 'e4']

Benchmarks

  1. # benchmark/fixtures/alpha-lower.js (29 bytes)
  2. brace-expansion x 145,653 ops/sec ±0.89% (87 runs sampled)
  3. expand-range x 453,213 ops/sec ±1.66% (85 runs sampled)
  4. minimatch x 152,193 ops/sec ±1.17% (86 runs sampled)
  5. # benchmark/fixtures/alpha-upper.js (29 bytes)
  6. brace-expansion x 149,975 ops/sec ±1.10% (88 runs sampled)
  7. expand-range x 459,390 ops/sec ±1.27% (84 runs sampled)
  8. minimatch x 155,253 ops/sec ±1.25% (88 runs sampled)
  9. # benchmark/fixtures/padded.js (33 bytes)
  10. brace-expansion x 14,694 ops/sec ±1.37% (85 runs sampled)
  11. expand-range x 169,393 ops/sec ±1.76% (80 runs sampled)
  12. minimatch x 15,052 ops/sec ±1.15% (88 runs sampled)
  13. # benchmark/fixtures/range.js (29 bytes)
  14. brace-expansion x 142,968 ops/sec ±1.35% (86 runs sampled)
  15. expand-range x 465,579 ops/sec ±1.43% (86 runs sampled)
  16. minimatch x 126,872 ops/sec ±1.18% (90 runs sampled)

Related projects

You might also be interested in these projects:

  • braces: Fastest brace expansion for node.js, with the most complete support for the Bash 4.3 braces… more | homepage
  • fill-range: Fill in a range of numbers or letters, optionally passing an increment or multiplier to… more | homepage
  • micromatch: Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | homepage

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

Building docs

Generate readme and API documentation with verb:

  1. $ npm install verb && npm run docs

Or, if verb is installed globally:

  1. $ verb

Running tests

Install dev dependencies:

  1. $ npm install -d && npm test

Author

Jon Schlinkert

License

Copyright © 2016, Jon Schlinkert. Released under the MIT license.


This file was generated by verb, v0.9.0, on May 05, 2016.