unravel-function
Takes a function and spreads its arguments across a chain of functions to be lazily evaluated, a la the Builder Pattern.
const unravel = ; { return foo - bar + qux;} func = ; var result = func ; console; // prints 10 (5 - 3 + 8)
Installation
$ npm install unravel-
Why Use It?
- It makes your function calls more readable- especially useful for functions with lots of arguments.
- It's lightweight. The source code is less than 850 bytes in size.
Description
unravel(func, params=undefined)
Returns an object whose keys are the parameter names of func
(unless overriden by params
), and whose values are functions that take a single argument that fills the corresponding parameter. Once the last argument is filled (or when eval()
is called), func
is evaluated with the arguments and the result is returned.
Parameters
Name | Type | Default Value | Description |
---|---|---|---|
func |
Function | The function to be called after the last argument has been filled, or when eval() is called. |
|
params |
Array[String] | null | [Optional] An array of strings to override func parameter names. (See examples below) |
Examples
Overriding parameter names
{ ...} // 'bezos' is mapped to the first argument, 'waldo' is mapped to the third argumentvar chain = ; // same as foo(1, 2, 3)var result = chain;
Additional parameter names
{ ...} // 'qux' is mapped to the fourth argumentvar chain = ; // same as foo(1, 2, 3, 4)var result = chain;
Short-circuit evaluation
{ ...} foo = ; // same as foo(undefined, 5, undefined)var result = foo;
Note on ES6 Default Parameters
If you are working on an ES6 project that compiles into ES5 code using Babel, unravel-function
will be unable to automatically detect ES6 default parameters in your compiled code. This is due to the way that ES6 implements default parameters. To unravel a function with ES6 default parameters, you will have to explicitly pass in the name of each parameter when calling unravel
.
const unravel = ; // function with ES6 default parameters { ...} foo = ;
About
This project is maintained by Tyler Hurson. Submit any issues or pull requests to the official Github repo.