Skip to content
Partial application for functions that accept options objects
JavaScript
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
browser-builds/standalone
test
.gitignore
.jshintrc
.npmignore
Gruntfile.js
LICENSE
README.md
bower.json
index.js
package.json

README.md

fillopts

Partially applied functions are really cool. However, partial application doesn't work too well for functions that use objects to emulate named arguments. Since that's such a common idiom in JS, we made this library to handle it.

var getJSON = fillopts(xhr)
    .withOpts({
        method: 'GET',
        headers: {'Accept': 'application/json'}
    });
getJSON({url: 'http://example.com/whatever.json'}, ...);

Installation

browserify and webpack users can simply npm install fillopts.

Bower users can bower install fillopts.

You can also just download the fillopts.js file from the standalone directory in the repository.

Usage

var
  xhr = require('some-xhr-lib'),
  fillopts = require('fillopts'); // Or use the global or AMD in the browser.

// Create a new function with some options prefilled.
var myXHR = fillopts(xhr, {method: 'GET'});

// Call our function with some more options.
myXHR({url: 'http://example.com'}, callback);

// The above is equivalent to this:
xhr({method: 'GET', url: 'http://example.com'}, callback);

or use chaining:

var myXHR = fillopts(xhr).withOpts({method: 'GET'});

myXHR({url: 'http://example.com'}, callback);

You can also fill opts that aren't in the first position by passing an index. All of the following are equivalent:

fillopts(f, {name: 'Crusher'}, 1)();
fillopts(f).withOpts({name: 'Crusher'}, 1)();
f(undefined, {name: 'Crusher'});
Something went wrong with that request. Please try again.