JSPM

  • Created
  • Published
  • Downloads 83900883
  • Score
    100M100P100Q243653F
  • License MIT

Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`

Package Exports

  • fill-range

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (fill-range) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

fill-range NPM version NPM monthly downloads NPM total downloads Linux Build Status

Fill in a range of numbers or letters, optionally passing an increment or step to use, or create a regex-compatible range with options.toRegex

Table of Contents

(TOC generated by verb using markdown-toc)

Install

Install with npm:

$ npm install --save fill-range

Usage

Expands numbers and letters, optionally using a step as the last argument. (Numbers may be defined as JavaScript numbers or strings).

var fill = require('fill-range');

console.log(fill('a', 'e'));
//=> ['a', 'b', 'c', 'd', 'e']

console.log(fill(0, 25, 5));
//=> [ 0, 5, 10, 15, 20, 25 ]

console.log(fill('a', 'e', {toRegex: true}));
//=> '[a-e]'

console.log(fill('a', 'z', 3, {toRegex: true}));
//=> 'a|d|g|j|m|p|s|v|y'

console.log(fill('1', '100', {toRegex: true}));
//=> '[1-9]|[1-9][0-9]|100'

Create regex-compatible ranges (returns a string, which can be used however you need to create a regex):

console.log(fill('a', 'e', {toRegex: true}));
//=> '[a-e]'

console.log(fill('a', 'z', 3, {toRegex: true}));
//=> 'a|d|g|j|m|p|s|v|y'

console.log(fill('1', '100', {toRegex: true}));
//=> '[1-9]|[1-9][0-9]|100'

Params

fill(start, stop, step, options, fn);
  • start: {String|Number} the number or letter to start with
  • end: {String|Number} the number or letter to end with
  • step: {String|Number} optionally pass the step to use. works for letters or numbers.
  • options: {Object}:
    • toRegex: return a regex-compatible string (still returned as an array for consistency)
    • step: pass the step on the options as an alternative to passing it as an argument
    • strict: undefined by default, set to true to throw errors on invalid ranges.
  • fn: {Function} optionally pass a function to modify each character. This can also be defined as options.transform

Examples

fill(1, 3)
//=> ['1', '2', '3']

fill('1', '3')
//=> ['1', '2', '3']

fill('0', '-5')
//=> [ '0', '-1', '-2', '-3', '-4', '-5' ]

fill(-9, 9, 3)
//=> [ '-9', '-6', '-3', '0', '3', '6', '9' ])

fill('-1', '-10', '-2')
//=> [ '-1', '-3', '-5', '-7', '-9' ]

fill('1', '10', '2')
//=> [ '1', '3', '5', '7', '9' ]

fill('a', 'e')
//=> ['a', 'b', 'c', 'd', 'e']

fill('a', 'e', 2)
//=> ['a', 'c', 'e']

fill('A', 'E', 2)
//=> ['A', 'C', 'E']

Invalid ranges

When an invalid range is passed, null is returned.

fill('1.1', '2');   // decimals not supported in ranges
//=> null

fill('a', '2');     // unmatched values
//=> null

fill(1, 10, 'foo'); // invalid step
//=> null

If you want errors to be throw, set options.strict to true.

Custom function

Optionally pass a custom function as last argument or on options.transform.

// increase padding by two
var arr = fill('01', '05', function(val, a, b, step, idx, arr, options) {
  return repeat('0', (options.maxLength + 2) - val.length) + val;
});

console.log(arr);
//=> ['0001', '0002', '0003', '0004', '0005']

About

  • braces: Fast, comprehensive, bash-like brace expansion implemented in JavaScript. Complete support for the Bash 4.3 braces… more | homepage
  • expand-range: Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. See… more | homepage
  • micromatch: Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | homepage
  • to-regex-range: Returns a regex-compatible range from two numbers, min and max. Validated against more than 1.1… more | homepage

Contributing

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

Contributors

Commits Contributor
96 jonschlinkert
2 paulmillr
1 edorivai
1 wtgtybhertgeghgtwtg

Building docs

(This project's readme.md is generated by verb, please don't edit the readme directly. Any changes to the readme must be made in the .verb.md readme template.)

To generate the readme, run the following command:

$ npm install -g verbose/verb#dev verb-generate-readme && verb

Running tests

Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:

$ npm install && npm test

Author

Jon Schlinkert

License

Copyright © 2017, Jon Schlinkert. MIT


This file was generated by verb-generate-readme, v0.4.2, on February 13, 2017.