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