Sweetener
Inspired by Mike Bostock's Towards Reusable Charts, this function makes it easy to add "syntactic sugar" for getting and setting properties on a function.
Installation
On npm:
npm install sweetener
Sweetener can be run in a browser by including sweetener.js
. It is available as a global (sweetener
) or via AMD.
Usage
Start with the function you wish to augment, and an object whose properties you wish to use:
var sweetener = // For node.js {}var object = hello: 'world' foo: 'bar'
Then call sweetener
with the function and the object:
The object properties can now be accessed by called methods on the function that match the object key:
fn // 'bar'
And they can be set by calling the method with a value:
fnfn // 'baz'
Setters return the function itself and so can be chained:
fn
Why?
In Towards Reusable Charts, Mike Bostock advocates using nested functions like so:
{ var width = 3 var height = 2 { console // … } chart { if !argumentslength return width width = _ return chart } chart { if !argumentslength return height height = _ return chart } return chart} var chart = chart() // render chart with a width: 3 and height: 2chart.width(4).height(3)chart() // render chart with a width: 4 and height: 3
Writing getters and setters for each variable can get cumbersome, so sweetener
can do the work for you:
{ var props = width: 3 height: 2 return } var chart = chart() // render chart with a width: 3 and height: 2chart.width(4).height(3)chart() // render chart with a width: 4 and height: 3
License
Sweetener is copyright © 2016+ Dom Christie and released under the MIT license.