Comparing version 1.0.1 to 1.0.2
# node-dashdash changelog | ||
## 1.0.2 | ||
- Add "positiveInteger" and "arrayOfPositiveInteger" option types that only | ||
accept positive integers. | ||
- Add "integer" and "arrayOfInteger" option types that accepts only integers. | ||
Note that, for better or worse, these do NOT accept: "0x42" (hex), "1e2" | ||
(with exponent) or "1.", "3.0" (floats). | ||
## 1.0.1 | ||
@@ -4,0 +14,0 @@ |
@@ -95,2 +95,24 @@ /** | ||
function parseInteger(option, optstr, arg) { | ||
assert.string(arg, 'arg'); | ||
var num = Number(arg); | ||
if (!/^[0-9-]+$/.test(arg) || isNaN(num)) { | ||
optstr = (optstr.length > 1 ? '--'+optstr : '-'+optstr); | ||
throw new Error(format('arg for "%s" is not an integer: "%s"', | ||
optstr, arg)); | ||
} | ||
return num; | ||
} | ||
function parsePositiveInteger(option, optstr, arg) { | ||
assert.string(arg, 'arg'); | ||
var num = Number(arg); | ||
if (!/^[0-9]+$/.test(arg) || isNaN(num)) { | ||
optstr = (optstr.length > 1 ? '--'+optstr : '-'+optstr); | ||
throw new Error(format('arg for "%s" is not a positive integer: "%s"', | ||
optstr, arg)); | ||
} | ||
return num; | ||
} | ||
var types = { | ||
@@ -111,2 +133,12 @@ bool: { | ||
}, | ||
integer: { | ||
takesArg: true, | ||
helpArg: 'INT', | ||
parseArg: parseInteger | ||
}, | ||
positiveInteger: { | ||
takesArg: true, | ||
helpArg: 'INT', | ||
parseArg: parsePositiveInteger | ||
}, | ||
arrayOfBool: { | ||
@@ -129,2 +161,14 @@ takesArg: false, | ||
}, | ||
arrayOfInteger: { | ||
takesArg: true, | ||
helpArg: 'INT', | ||
array: true, | ||
parseArg: parseInteger | ||
}, | ||
arrayOfPositiveInteger: { | ||
takesArg: true, | ||
helpArg: 'INT', | ||
array: true, | ||
parseArg: parsePositiveInteger | ||
}, | ||
}; | ||
@@ -131,0 +175,0 @@ |
{ | ||
"name": "dashdash", | ||
"description": "Yet another node.js option parsing library", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"author": "Trent Mick (trentm.com)", | ||
@@ -6,0 +6,0 @@ "repository": { |
@@ -150,6 +150,18 @@ Yet another node.js option parsing library. | ||
- `type` (String). Required. One of bool, string, number, arrayOfBool, | ||
arrayOfString, arrayOfNumber. (FWIW, these names attempt to match with | ||
asserts on [assert-plus](https://github.com/mcavage/node-assert-plus)). | ||
- `type` (String). Required. One of: | ||
- bool | ||
- string | ||
- number | ||
- integer | ||
- positiveInteger | ||
- arrayOfBool | ||
- arrayOfString | ||
- arrayOfNumber | ||
- arrayOfInteger | ||
- arrayOfPositiveInteger | ||
FWIW, these names attempt to match with asserts on | ||
[assert-plus](https://github.com/mcavage/node-assert-plus). | ||
- `help` (String). Optional. Used for `parser.help()` output. | ||
@@ -156,0 +168,0 @@ |
@@ -312,2 +312,114 @@ /* | ||
// integer | ||
{ | ||
options: [ {name: 't', type: 'integer'} ], | ||
argv: 'node tool.js -t 0', | ||
expect: { t: 0, _args: [] } | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'integer'} ], | ||
argv: 'node tool.js -t 42', | ||
expect: { t: 42, _args: [] } | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'integer'} ], | ||
argv: 'node tool.js -t42', | ||
expect: { t: 42, _args: [] } | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'integer'} ], | ||
argv: 'node tool.js -t -5', | ||
expect: { t: -5, _args: [] } | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'integer'} ], | ||
argv: 'node tool.js -t-5', | ||
expect: { t: -5, _args: [] } | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'integer'} ], | ||
argv: 'node tool.js -t 1e2', | ||
/* JSSTYLED */ | ||
expect: /arg for "-t" is not an integer/ | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'integer'} ], | ||
argv: 'node tool.js -t 0x32', | ||
/* JSSTYLED */ | ||
expect: /arg for "-t" is not an integer/ | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'integer'} ], | ||
argv: 'node tool.js -t 3.1', | ||
/* JSSTYLED */ | ||
expect: /arg for "-t" is not an integer/ | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'integer'} ], | ||
argv: 'node tool.js -t 42.', | ||
/* JSSTYLED */ | ||
expect: /arg for "-t" is not an integer/ | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'integer'} ], | ||
argv: 'node tool.js -t 1e-2', | ||
/* JSSTYLED */ | ||
expect: /arg for "-t" is not an integer/ | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'arrayOfInteger'} ], | ||
argv: 'node tool.js', | ||
expect: { _args: [] } | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'arrayOfInteger'} ], | ||
argv: 'node tool.js -t 42', | ||
expect: { t: [42], _args: [] } | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'arrayOfInteger'} ], | ||
argv: 'node tool.js -t 1 -t 2 -t -3', | ||
expect: { t: [1, 2, -3], _args: [] } | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'arrayOfInteger'} ], | ||
argv: 'node tool.js -t 1 -t 1e2', | ||
/* JSSTYLED */ | ||
expect: /arg for "-t" is not an integer/ | ||
}, | ||
// positiveInteger | ||
{ | ||
options: [ {name: 't', type: 'positiveInteger'} ], | ||
argv: 'node tool.js -t 0', | ||
expect: { t: 0, _args: [] } | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'positiveInteger'} ], | ||
argv: 'node tool.js -t 42', | ||
expect: { t: 42, _args: [] } | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'positiveInteger'} ], | ||
argv: 'node tool.js -t42', | ||
expect: { t: 42, _args: [] } | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'positiveInteger'} ], | ||
argv: 'node tool.js -t -5', | ||
/* JSSTYLED */ | ||
expect: /arg for "-t" is not a positive integer/ | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'arrayOfPositiveInteger'} ], | ||
argv: 'node tool.js -t42', | ||
expect: { t: [42], _args: [] } | ||
}, | ||
{ | ||
options: [ {name: 't', type: 'arrayOfPositiveInteger'} ], | ||
argv: 'node tool.js -t 42 -t -5', | ||
/* JSSTYLED */ | ||
expect: /arg for "-t" is not a positive integer/ | ||
}, | ||
]; | ||
@@ -342,3 +454,3 @@ cases.forEach(function (c, i) { | ||
} | ||
t.ok(error, 'got an expected error'); | ||
t.ok(error, 'expected an error'); | ||
} else if (expect) { | ||
@@ -345,0 +457,0 @@ opts = parser.parse(argv); |
# someday/maybe | ||
- type 'int' | ||
- being able to add types: i.e. a validator (easy to do, just haven't exposed) | ||
- make check | ||
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Copyleft License
License(Experimental) Copyleft license information was found.
Found 1 instance in 1 package
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
Non-permissive License
License(Experimental) A license not known to be considered permissive was found.
Found 1 instance in 1 package
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
84853
0
100
941
222