angst
v0.1.2
Published
Named arguments for JavaScript, adapted from AngularJS.
Downloads
11
Maintainers
Readme
angst
Named arguments for JavaScript, adapted from AngularJS.
Usage
'use strict';
var angst = require('angst');
var argObj = {
x: 1,
y: 2
};
var fn = function(x, y) {
return x + y;
};
console.log(angst(fn)(argObj)); //=> 3
var gn = function(x, z) {
if (typeof z === 'undefined') {
return 'z is undefined';
}
return x;
};
console.log(angst(gn)(argObj)); //=> 'z is undefined'
Because code minification mangles variable names, the above will work as expected only when unminified. If we cannot guarantee this, we must pass in an additional string array of the function’s argument names to angst
. For example:
var argObj = {
x: 1,
y: 2
};
var fn = function(x, y) {
return x + y;
};
console.log(angst(fn, ['x', 'y'])(argObj)); //=> 3
See the tests for more usage examples.
API
var angst = require('angst');
var gn = angst(fn [, argNames])
Takes a function fn
, and returns a function gn
that can be invoked using named arguments.
fn
— The function we want to invoke using named arguments. Throws iffn
is not a function.argNames
— A string array containing the names of the arguments expected byfn
. This is mandatory if your code is going to be minified.
gn(argObj [, context])
Applies arguments from argObj
to our initial function fn
, with this
set to the specified context
.
argObj
— An object literal that maps the argument names offn
to their values.context
— The context forthis
when invokingfn
.
angst.parse(fn)
Returns a string array containing the names of the arguments expected by fn
.
fn
— The function to be parsed. Throws iffn
is not a function.
Installation
Install via npm:
$ npm i --save angst
Credit
Most of this module’s core logic and tests were adapted from AngularJS:
Changelog
- 0.1.0
- Initial release