Template Upload
This commit is contained in:
21
node_modules/fill-range/LICENSE
generated
vendored
Normal file
21
node_modules/fill-range/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014-2015, Jon Schlinkert.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
290
node_modules/fill-range/README.md
generated
vendored
Normal file
290
node_modules/fill-range/README.md
generated
vendored
Normal file
@ -0,0 +1,290 @@
|
||||
# fill-range [](http://badge.fury.io/js/fill-range) [](https://travis-ci.org/jonschlinkert/fill-range)
|
||||
|
||||
> Fill in a range of numbers or letters, optionally passing an increment or multiplier to use.
|
||||
|
||||
## Install with [npm](npmjs.org)
|
||||
|
||||
```bash
|
||||
npm i fill-range --save
|
||||
```
|
||||
|
||||
<!-- toc -->
|
||||
|
||||
- [Usage](#usage)
|
||||
* [Invalid ranges](#invalid-ranges)
|
||||
* [Custom function](#custom-function)
|
||||
* [Special characters](#special-characters)
|
||||
+ [plus](#plus)
|
||||
+ [pipe and tilde](#pipe-and-tilde)
|
||||
+ [angle bracket](#angle-bracket)
|
||||
+ [question mark](#question-mark)
|
||||
- [Other useful libs](#other-useful-libs)
|
||||
- [Running tests](#running-tests)
|
||||
- [Contributing](#contributing)
|
||||
- [Author](#author)
|
||||
- [License](#license)
|
||||
|
||||
_(Table of contents generated by [verb])_
|
||||
|
||||
<!-- tocstop -->
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var range = require('fill-range');
|
||||
|
||||
range('a', 'e');
|
||||
//=> ['a', 'b', 'c', 'd', 'e']
|
||||
```
|
||||
|
||||
**Params**
|
||||
|
||||
```js
|
||||
range(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}**:
|
||||
+ `makeRe`: 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
|
||||
+ `silent`: `true` by default, set to false to throw errors for invalid ranges.
|
||||
- `fn`: **{Function}** optionally [pass a function](#custom-function) to modify each character
|
||||
|
||||
|
||||
**Examples**
|
||||
|
||||
```js
|
||||
range(1, 3)
|
||||
//=> ['1', '2', '3']
|
||||
|
||||
range('1', '3')
|
||||
//=> ['1', '2', '3']
|
||||
|
||||
range('0', '-5')
|
||||
//=> [ '0', '-1', '-2', '-3', '-4', '-5' ]
|
||||
|
||||
range(-9, 9, 3)
|
||||
//=> [ '-9', '-6', '-3', '0', '3', '6', '9' ])
|
||||
|
||||
range('-1', '-10', '-2')
|
||||
//=> [ '-1', '-3', '-5', '-7', '-9' ]
|
||||
|
||||
range('1', '10', '2')
|
||||
//=> [ '1', '3', '5', '7', '9' ]
|
||||
|
||||
range('a', 'e')
|
||||
//=> ['a', 'b', 'c', 'd', 'e']
|
||||
|
||||
range('a', 'e', 2)
|
||||
//=> ['a', 'c', 'e']
|
||||
|
||||
range('A', 'E', 2)
|
||||
//=> ['A', 'C', 'E']
|
||||
```
|
||||
|
||||
### Invalid ranges
|
||||
|
||||
When an invalid range is passed, `null` is returned.
|
||||
|
||||
```js
|
||||
range('1.1', '2');
|
||||
//=> null
|
||||
|
||||
range('a', '2');
|
||||
//=> null
|
||||
|
||||
range(1, 10, 'foo');
|
||||
//=> null
|
||||
```
|
||||
|
||||
If you want errors to be throw, pass `silent: false` on the options:
|
||||
|
||||
|
||||
### Custom function
|
||||
|
||||
Optionally pass a custom function as the third or fourth argument:
|
||||
|
||||
```js
|
||||
range('a', 'e', function (val, isNumber, pad, i) {
|
||||
if (!isNumber) {
|
||||
return String.fromCharCode(val) + i;
|
||||
}
|
||||
return val;
|
||||
});
|
||||
//=> ['a0', 'b1', 'c2', 'd3', 'e4']
|
||||
```
|
||||
|
||||
### Special characters
|
||||
|
||||
A special character may be passed as the third arg instead of a step increment. These characters can be pretty useful for brace expansion, creating file paths, test fixtures and similar use case.
|
||||
|
||||
```js
|
||||
range('a', 'z', SPECIAL_CHARACTER_HERE);
|
||||
```
|
||||
|
||||
**Supported characters**
|
||||
|
||||
- `+`: repeat the given string `n` times
|
||||
- `|`: create a regex-ready string, instead of an array
|
||||
- `>`: join values to single array element
|
||||
- `?`: randomize the given pattern using [randomatic]
|
||||
|
||||
#### plus
|
||||
|
||||
Character: _(`+`)_
|
||||
|
||||
Repeat the first argument the number of times passed on the second argument.
|
||||
|
||||
**Examples:**
|
||||
|
||||
```js
|
||||
range('a', 3, '+');
|
||||
//=> ['a', 'a', 'a']
|
||||
|
||||
range('abc', 2, '+');
|
||||
//=> ['abc', 'abc']
|
||||
```
|
||||
|
||||
#### pipe and tilde
|
||||
|
||||
Characters: _(`|` and `~`)_
|
||||
|
||||
Creates a regex-capable string (either a logical `or` or a character class) from the expanded arguments.
|
||||
|
||||
**Examples:**
|
||||
|
||||
```js
|
||||
range('a', 'c', '|');
|
||||
//=> ['(a|b|c)'
|
||||
|
||||
range('a', 'c', '~');
|
||||
//=> ['[a-c]'
|
||||
|
||||
range('a', 'z', '|5');
|
||||
//=> ['(a|f|k|p|u|z)'
|
||||
```
|
||||
|
||||
**Automatic separator correction**
|
||||
|
||||
To avoid this error:
|
||||
|
||||
> `Range out of order in character class`
|
||||
|
||||
Fill-range detects invalid sequences and uses the correct syntax. For example:
|
||||
|
||||
**invalid** (regex)
|
||||
|
||||
If you pass these:
|
||||
|
||||
```js
|
||||
range('a', 'z', '~5');
|
||||
// which would result in this
|
||||
//=> ['[a-f-k-p-u-z]']
|
||||
|
||||
range('10', '20', '~');
|
||||
// which would result in this
|
||||
//=> ['[10-20]']
|
||||
```
|
||||
|
||||
**valid** (regex)
|
||||
|
||||
fill-range corrects them to this:
|
||||
|
||||
```js
|
||||
range('a', 'z', '~5');
|
||||
//=> ['(a|f|k|p|u|z)'
|
||||
|
||||
range('10', '20', '~');
|
||||
//=> ['(10-20)'
|
||||
```
|
||||
|
||||
#### angle bracket
|
||||
|
||||
Character: _(`>`)_
|
||||
|
||||
Joins all values in the returned array to a single value.
|
||||
|
||||
**Examples:**
|
||||
|
||||
```js
|
||||
range('a', 'e', '>');
|
||||
//=> ['abcde']
|
||||
|
||||
range('5', '8', '>');
|
||||
//=> ['5678']
|
||||
|
||||
range('2', '20', '2>');
|
||||
//=> ['2468101214161820']
|
||||
```
|
||||
|
||||
|
||||
#### question mark
|
||||
|
||||
Character: _(`?`)_
|
||||
|
||||
Uses [randomatic] to generate randomized alpha, numeric, or alpha-numeric patterns based on the provided arguments.
|
||||
|
||||
**Examples:**
|
||||
|
||||
_(actual results would obviously be randomized)_
|
||||
|
||||
Generate a 5-character, uppercase, alphabetical string:
|
||||
|
||||
```js
|
||||
range('A', 5, '?');
|
||||
//=> ['NSHAK']
|
||||
```
|
||||
|
||||
Generate a 5-digit random number:
|
||||
|
||||
```js
|
||||
range('0', 5, '?');
|
||||
//=> ['36583']
|
||||
```
|
||||
|
||||
Generate a 10-character alpha-numeric string:
|
||||
|
||||
```js
|
||||
range('A0', 10, '?');
|
||||
//=> ['5YJD60VQNN']
|
||||
```
|
||||
|
||||
See the [randomatic] repo for all available options and or to create issues or feature requests related to randomization.
|
||||
|
||||
## Other useful libs
|
||||
* [micromatch](https://github.com/jonschlinkert/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. Just use `micromatch.isMatch()` instead of `minimatch()`, or use `micromatch()` instead of `multimatch()`.
|
||||
* [expand-range](https://github.com/jonschlinkert/expand-range): Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. See the benchmarks. Used by micromatch.
|
||||
* [braces](https://github.com/jonschlinkert/braces): Fastest brace expansion for node.js, with the most complete support for the Bash 4.3 braces specification.
|
||||
* [is-glob](https://github.com/jonschlinkert/is-glob): Returns `true` if the given string looks like a glob pattern.
|
||||
|
||||
## Running tests
|
||||
Install dev dependencies:
|
||||
|
||||
```bash
|
||||
npm i -d && npm test
|
||||
```
|
||||
|
||||
## Contributing
|
||||
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/fill-range/issues)
|
||||
|
||||
## Author
|
||||
|
||||
**Jon Schlinkert**
|
||||
|
||||
+ [github/jonschlinkert](https://github.com/jonschlinkert)
|
||||
+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
|
||||
|
||||
## License
|
||||
Copyright (c) 2014-2015 Jon Schlinkert
|
||||
Released under the MIT license
|
||||
|
||||
***
|
||||
|
||||
_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on April 07, 2015._
|
||||
|
||||
[randomatic]: https://github.com/jonschlinkert/randomatic
|
||||
[expand-range]: https://github.com/jonschlinkert/expand-range
|
||||
[micromatch]: https://github.com/jonschlinkert/micromatch
|
||||
[braces]: https://github.com/jonschlinkert/braces
|
408
node_modules/fill-range/index.js
generated
vendored
Normal file
408
node_modules/fill-range/index.js
generated
vendored
Normal file
@ -0,0 +1,408 @@
|
||||
/*!
|
||||
* fill-range <https://github.com/jonschlinkert/fill-range>
|
||||
*
|
||||
* Copyright (c) 2014-2015, Jon Schlinkert.
|
||||
* Licensed under the MIT License.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var isObject = require('isobject');
|
||||
var isNumber = require('is-number');
|
||||
var randomize = require('randomatic');
|
||||
var repeatStr = require('repeat-string');
|
||||
var repeat = require('repeat-element');
|
||||
|
||||
/**
|
||||
* Expose `fillRange`
|
||||
*/
|
||||
|
||||
module.exports = fillRange;
|
||||
|
||||
/**
|
||||
* Return a range of numbers or letters.
|
||||
*
|
||||
* @param {String} `a` Start of the range
|
||||
* @param {String} `b` End of the range
|
||||
* @param {String} `step` Increment or decrement to use.
|
||||
* @param {Function} `fn` Custom function to modify each element in the range.
|
||||
* @return {Array}
|
||||
*/
|
||||
|
||||
function fillRange(a, b, step, options, fn) {
|
||||
if (a == null || b == null) {
|
||||
throw new Error('fill-range expects the first and second args to be strings.');
|
||||
}
|
||||
|
||||
if (typeof step === 'function') {
|
||||
fn = step; options = {}; step = null;
|
||||
}
|
||||
|
||||
if (typeof options === 'function') {
|
||||
fn = options; options = {};
|
||||
}
|
||||
|
||||
if (isObject(step)) {
|
||||
options = step; step = '';
|
||||
}
|
||||
|
||||
var expand, regex = false, sep = '';
|
||||
var opts = options || {};
|
||||
|
||||
if (typeof opts.silent === 'undefined') {
|
||||
opts.silent = true;
|
||||
}
|
||||
|
||||
step = step || opts.step;
|
||||
|
||||
// store a ref to unmodified arg
|
||||
var origA = a, origB = b;
|
||||
|
||||
b = (b.toString() === '-0') ? 0 : b;
|
||||
|
||||
if (opts.optimize || opts.makeRe) {
|
||||
step = step ? (step += '~') : step;
|
||||
expand = true;
|
||||
regex = true;
|
||||
sep = '~';
|
||||
}
|
||||
|
||||
// handle special step characters
|
||||
if (typeof step === 'string') {
|
||||
var match = stepRe().exec(step);
|
||||
|
||||
if (match) {
|
||||
var i = match.index;
|
||||
var m = match[0];
|
||||
|
||||
// repeat string
|
||||
if (m === '+') {
|
||||
return repeat(a, b);
|
||||
|
||||
// randomize a, `b` times
|
||||
} else if (m === '?') {
|
||||
return [randomize(a, b)];
|
||||
|
||||
// expand right, no regex reduction
|
||||
} else if (m === '>') {
|
||||
step = step.substr(0, i) + step.substr(i + 1);
|
||||
expand = true;
|
||||
|
||||
// expand to an array, or if valid create a reduced
|
||||
// string for a regex logic `or`
|
||||
} else if (m === '|') {
|
||||
step = step.substr(0, i) + step.substr(i + 1);
|
||||
expand = true;
|
||||
regex = true;
|
||||
sep = m;
|
||||
|
||||
// expand to an array, or if valid create a reduced
|
||||
// string for a regex range
|
||||
} else if (m === '~') {
|
||||
step = step.substr(0, i) + step.substr(i + 1);
|
||||
expand = true;
|
||||
regex = true;
|
||||
sep = m;
|
||||
}
|
||||
} else if (!isNumber(step)) {
|
||||
if (!opts.silent) {
|
||||
throw new TypeError('fill-range: invalid step.');
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if (/[.&*()[\]^%$#@!]/.test(a) || /[.&*()[\]^%$#@!]/.test(b)) {
|
||||
if (!opts.silent) {
|
||||
throw new RangeError('fill-range: invalid range arguments.');
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// has neither a letter nor number, or has both letters and numbers
|
||||
// this needs to be after the step logic
|
||||
if (!noAlphaNum(a) || !noAlphaNum(b) || hasBoth(a) || hasBoth(b)) {
|
||||
if (!opts.silent) {
|
||||
throw new RangeError('fill-range: invalid range arguments.');
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// validate arguments
|
||||
var isNumA = isNumber(zeros(a));
|
||||
var isNumB = isNumber(zeros(b));
|
||||
|
||||
if ((!isNumA && isNumB) || (isNumA && !isNumB)) {
|
||||
if (!opts.silent) {
|
||||
throw new TypeError('fill-range: first range argument is incompatible with second.');
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// by this point both are the same, so we
|
||||
// can use A to check going forward.
|
||||
var isNum = isNumA;
|
||||
var num = formatStep(step);
|
||||
|
||||
// is the range alphabetical? or numeric?
|
||||
if (isNum) {
|
||||
// if numeric, coerce to an integer
|
||||
a = +a; b = +b;
|
||||
} else {
|
||||
// otherwise, get the charCode to expand alpha ranges
|
||||
a = a.charCodeAt(0);
|
||||
b = b.charCodeAt(0);
|
||||
}
|
||||
|
||||
// is the pattern descending?
|
||||
var isDescending = a > b;
|
||||
|
||||
// don't create a character class if the args are < 0
|
||||
if (a < 0 || b < 0) {
|
||||
expand = false;
|
||||
regex = false;
|
||||
}
|
||||
|
||||
// detect padding
|
||||
var padding = isPadded(origA, origB);
|
||||
var res, pad, arr = [];
|
||||
var ii = 0;
|
||||
|
||||
// character classes, ranges and logical `or`
|
||||
if (regex) {
|
||||
if (shouldExpand(a, b, num, isNum, padding, opts)) {
|
||||
// make sure the correct separator is used
|
||||
if (sep === '|' || sep === '~') {
|
||||
sep = detectSeparator(a, b, num, isNum, isDescending);
|
||||
}
|
||||
return wrap([origA, origB], sep, opts);
|
||||
}
|
||||
}
|
||||
|
||||
while (isDescending ? (a >= b) : (a <= b)) {
|
||||
if (padding && isNum) {
|
||||
pad = padding(a);
|
||||
}
|
||||
|
||||
// custom function
|
||||
if (typeof fn === 'function') {
|
||||
res = fn(a, isNum, pad, ii++);
|
||||
|
||||
// letters
|
||||
} else if (!isNum) {
|
||||
if (regex && isInvalidChar(a)) {
|
||||
res = null;
|
||||
} else {
|
||||
res = String.fromCharCode(a);
|
||||
}
|
||||
|
||||
// numbers
|
||||
} else {
|
||||
res = formatPadding(a, pad);
|
||||
}
|
||||
|
||||
// add result to the array, filtering any nulled values
|
||||
if (res !== null) arr.push(res);
|
||||
|
||||
// increment or decrement
|
||||
if (isDescending) {
|
||||
a -= num;
|
||||
} else {
|
||||
a += num;
|
||||
}
|
||||
}
|
||||
|
||||
// now that the array is expanded, we need to handle regex
|
||||
// character classes, ranges or logical `or` that wasn't
|
||||
// already handled before the loop
|
||||
if ((regex || expand) && !opts.noexpand) {
|
||||
// make sure the correct separator is used
|
||||
if (sep === '|' || sep === '~') {
|
||||
sep = detectSeparator(a, b, num, isNum, isDescending);
|
||||
}
|
||||
if (arr.length === 1 || a < 0 || b < 0) { return arr; }
|
||||
return wrap(arr, sep, opts);
|
||||
}
|
||||
|
||||
return arr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrap the string with the correct regex
|
||||
* syntax.
|
||||
*/
|
||||
|
||||
function wrap(arr, sep, opts) {
|
||||
if (sep === '~') { sep = '-'; }
|
||||
var str = arr.join(sep);
|
||||
var pre = opts && opts.regexPrefix;
|
||||
|
||||
// regex logical `or`
|
||||
if (sep === '|') {
|
||||
str = pre ? pre + str : str;
|
||||
str = '(' + str + ')';
|
||||
}
|
||||
|
||||
// regex character class
|
||||
if (sep === '-') {
|
||||
str = (pre && pre === '^')
|
||||
? pre + str
|
||||
: str;
|
||||
str = '[' + str + ']';
|
||||
}
|
||||
return [str];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for invalid characters
|
||||
*/
|
||||
|
||||
function isCharClass(a, b, step, isNum, isDescending) {
|
||||
if (isDescending) { return false; }
|
||||
if (isNum) { return a <= 9 && b <= 9; }
|
||||
if (a < b) { return step === 1; }
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Detect the correct separator to use
|
||||
*/
|
||||
|
||||
function shouldExpand(a, b, num, isNum, padding, opts) {
|
||||
if (isNum && (a > 9 || b > 9)) { return false; }
|
||||
return !padding && num === 1 && a < b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Detect the correct separator to use
|
||||
*/
|
||||
|
||||
function detectSeparator(a, b, step, isNum, isDescending) {
|
||||
var isChar = isCharClass(a, b, step, isNum, isDescending);
|
||||
if (!isChar) {
|
||||
return '|';
|
||||
}
|
||||
return '~';
|
||||
}
|
||||
|
||||
/**
|
||||
* Correctly format the step based on type
|
||||
*/
|
||||
|
||||
function formatStep(step) {
|
||||
return Math.abs(step >> 0) || 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format padding, taking leading `-` into account
|
||||
*/
|
||||
|
||||
function formatPadding(ch, pad) {
|
||||
var res = pad ? pad + ch : ch;
|
||||
if (pad && ch.toString().charAt(0) === '-') {
|
||||
res = '-' + pad + ch.toString().substr(1);
|
||||
}
|
||||
return res.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for invalid characters
|
||||
*/
|
||||
|
||||
function isInvalidChar(str) {
|
||||
var ch = toStr(str);
|
||||
return ch === '\\'
|
||||
|| ch === '['
|
||||
|| ch === ']'
|
||||
|| ch === '^'
|
||||
|| ch === '('
|
||||
|| ch === ')'
|
||||
|| ch === '`';
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert to a string from a charCode
|
||||
*/
|
||||
|
||||
function toStr(ch) {
|
||||
return String.fromCharCode(ch);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Step regex
|
||||
*/
|
||||
|
||||
function stepRe() {
|
||||
return /\?|>|\||\+|\~/g;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if `val` has either a letter
|
||||
* or a number
|
||||
*/
|
||||
|
||||
function noAlphaNum(val) {
|
||||
return /[a-z0-9]/i.test(val);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if `val` has both a letter and
|
||||
* a number (invalid)
|
||||
*/
|
||||
|
||||
function hasBoth(val) {
|
||||
return /[a-z][0-9]|[0-9][a-z]/i.test(val);
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize zeros for checks
|
||||
*/
|
||||
|
||||
function zeros(val) {
|
||||
if (/^-*0+$/.test(val.toString())) {
|
||||
return '0';
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if `val` has leading zeros,
|
||||
* or a similar valid pattern.
|
||||
*/
|
||||
|
||||
function hasZeros(val) {
|
||||
return /[^.]\.|^-*0+[0-9]/.test(val);
|
||||
}
|
||||
|
||||
/**
|
||||
* If the string is padded, returns a curried function with
|
||||
* the a cached padding string, or `false` if no padding.
|
||||
*
|
||||
* @param {*} `origA` String or number.
|
||||
* @return {String|Boolean}
|
||||
*/
|
||||
|
||||
function isPadded(origA, origB) {
|
||||
if (hasZeros(origA) || hasZeros(origB)) {
|
||||
var alen = length(origA);
|
||||
var blen = length(origB);
|
||||
|
||||
var len = alen >= blen
|
||||
? alen
|
||||
: blen;
|
||||
|
||||
return function (a) {
|
||||
return repeatStr('0', len - length(a));
|
||||
};
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the string length of `val`
|
||||
*/
|
||||
|
||||
function length(val) {
|
||||
return val.toString().length;
|
||||
}
|
122
node_modules/fill-range/package.json
generated
vendored
Normal file
122
node_modules/fill-range/package.json
generated
vendored
Normal file
@ -0,0 +1,122 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"fill-range@^2.1.0",
|
||||
"C:\\Users\\x2mjbyrn\\Source\\Repos\\Skeleton\\node_modules\\expand-range"
|
||||
]
|
||||
],
|
||||
"_from": "fill-range@>=2.1.0-0 <3.0.0-0",
|
||||
"_id": "fill-range@2.2.3",
|
||||
"_inCache": true,
|
||||
"_location": "/fill-range",
|
||||
"_nodeVersion": "5.0.0",
|
||||
"_npmUser": {
|
||||
"email": "github@sellside.com",
|
||||
"name": "jonschlinkert"
|
||||
},
|
||||
"_npmVersion": "3.3.6",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"name": "fill-range",
|
||||
"raw": "fill-range@^2.1.0",
|
||||
"rawSpec": "^2.1.0",
|
||||
"scope": null,
|
||||
"spec": ">=2.1.0-0 <3.0.0-0",
|
||||
"type": "range"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/expand-range"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
|
||||
"_shasum": "50b77dfd7e469bc7492470963699fe7a8485a723",
|
||||
"_shrinkwrap": null,
|
||||
"_spec": "fill-range@^2.1.0",
|
||||
"_where": "C:\\Users\\x2mjbyrn\\Source\\Repos\\Skeleton\\node_modules\\expand-range",
|
||||
"author": {
|
||||
"name": "Jon Schlinkert",
|
||||
"url": "https://github.com/jonschlinkert"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/jonschlinkert/fill-range/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"is-number": "^2.1.0",
|
||||
"isobject": "^2.0.0",
|
||||
"randomatic": "^1.1.3",
|
||||
"repeat-element": "^1.1.2",
|
||||
"repeat-string": "^1.5.2"
|
||||
},
|
||||
"description": "Fill in a range of numbers or letters, optionally passing an increment or multiplier to use.",
|
||||
"devDependencies": {
|
||||
"benchmarked": "^0.1.3",
|
||||
"chalk": "^0.5.1",
|
||||
"should": "*"
|
||||
},
|
||||
"directories": {},
|
||||
"dist": {
|
||||
"shasum": "50b77dfd7e469bc7492470963699fe7a8485a723",
|
||||
"tarball": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"gitHead": "6cb50d5c679d9e6d9e8ad97bb2efd63a8c8da610",
|
||||
"homepage": "https://github.com/jonschlinkert/fill-range",
|
||||
"installable": true,
|
||||
"keywords": [
|
||||
"alpha",
|
||||
"alphabetical",
|
||||
"bash",
|
||||
"brace",
|
||||
"expand",
|
||||
"expansion",
|
||||
"glob",
|
||||
"match",
|
||||
"matches",
|
||||
"matching",
|
||||
"number",
|
||||
"numerical",
|
||||
"range",
|
||||
"ranges",
|
||||
"sh"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "jonschlinkert",
|
||||
"email": "github@sellside.com"
|
||||
},
|
||||
{
|
||||
"name": "doowb",
|
||||
"email": "brian.woodward@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "es128",
|
||||
"email": "elan.shanker+npm@gmail.com"
|
||||
}
|
||||
],
|
||||
"name": "fill-range",
|
||||
"optionalDependencies": {},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/jonschlinkert/fill-range.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha"
|
||||
},
|
||||
"verb": {
|
||||
"related": {
|
||||
"list": [
|
||||
"braces",
|
||||
"expand-range",
|
||||
"is-glob",
|
||||
"micromatch"
|
||||
]
|
||||
}
|
||||
},
|
||||
"version": "2.2.3"
|
||||
}
|
Reference in New Issue
Block a user