79 lines
2.0 KiB
Markdown
79 lines
2.0 KiB
Markdown
getargs
|
|
=======
|
|
|
|
Simple utility for parsing/processing variable length argument lists for Javascript functions; also verifies argument types and argument list length.
|
|
|
|
## Install
|
|
|
|
Bower - `bower install getargs`; NPM - `npm install getargs`.
|
|
|
|
## Usage
|
|
|
|
var getArgs = require('getargs')
|
|
|
|
function ajax(/* url:string|array, [options]:object, callback:function */){
|
|
var args = getArgs('url:string|array, [options]:object, callback:function', arguments)
|
|
|
|
console.log('url is', args.url)
|
|
console.log('options is optionally', args.options)
|
|
console.log('callback', args.callback)
|
|
}
|
|
|
|
## Argument Spec Syntax
|
|
|
|
The argument spec is a comma delimited string of individual specs, which look like
|
|
|
|
argname:type
|
|
|
|
You can specify multiple types by using `|`
|
|
|
|
argname:type|type|type
|
|
|
|
* `argname` is the name of the argument, and can be called anything
|
|
* `type` is an optional basic Javascript type. Currently these are supported
|
|
* `string`
|
|
* `boolean`
|
|
* `number`
|
|
* `object`
|
|
* `function`
|
|
* `array`
|
|
|
|
### Optional Arguments
|
|
|
|
To denote optional arguments, you'd surround `argname` with square brackets `[]`.
|
|
|
|
### Type Verification
|
|
|
|
getArgs will throw if the arguments have the wrong types
|
|
|
|
var args = getArgs('url:string', [1])
|
|
// Error: Expected url(pos 0) to be a string
|
|
|
|
### Argument List Length Verification
|
|
|
|
getArgs will throw if there are too many or too few arguments
|
|
|
|
> getArgs('a,b', [1])
|
|
Error: Not enough arguments, expected 2, got 1
|
|
> getArgs('a,b', [1,1])
|
|
{ a: 1, b: 1 }
|
|
> getArgs('a,b', [1,1,1])
|
|
Error: Too many arguments, expected 2, got 3
|
|
|
|
### Spread Operator
|
|
|
|
You can mimick ES6's spread operator
|
|
|
|
var args = getArgs('first,...rest', [1,2,3,4])
|
|
console.log(args.first) // 1
|
|
console.log(args.rest) // [2,3,4]
|
|
|
|
### Set properties on an object
|
|
|
|
If you pass an object as its third argument, it will set the arguments as properties on that object.
|
|
|
|
getArgs('a,b,c', arguments, this)
|
|
// Now you can access the arguments by
|
|
// this.a, this.b, and this.c
|
|
|