Miss any of our Open RFC calls?Watch the recordings here! »

lifta-syntax-safe

1.0.1 • Public • Published

lifta-syntax-safe

Because lifta-syntax adds functions and properties to Function.prototype, you can run afoul of name collisions with other libraries that do the same. lifta-syntax-safe allows you to configure a "lift" property and a "backing" property for Function.prototype. These two properties are the only changes to Function.prototype. The two properties default to { lift: 'a', backing: '_a' }. You can set them by passing in an options object like this: let lifta = require('lifta-syntax-safe')({ lift: 'fred', backing: '_barney' });

Note that functions must be initially lifted in order to access the fluent syntax - the syntax is no longer on Function.prototype but is on a prototype only available to lifted functions. For example, note the "myFunction.a" below:

let lifta = require('lifta-syntax-safe')();
// [...]
function myFunction(x) {
    return [x.first * 2, x.second]
}
// [...]
myFunction.a.then(myOtherFunction).then(yetAnotherFunction);

In the above example, myOtherFunction and yetAnotherFunction will be automatically lifted during construction after being passed into the fluent ".then".

Note that arrows (of the form function (x, cont, p)) you write also need to be lifted in order to pick up the fluent syntax. Unlike lifta-syntax, the alternative prototype is needed for your fluent syntax. It is installed when the function is lifted with the [lift], property (which defaults to "a"). So it is fairly simple to lift your own arrows:

function myArrow(x, cont, p) {
    cont([x.first * 2, x.second], p);
}
myArrow.a.then(myOtherArrow);

Note that similarly to the first example, passing your arrow into a fluent ".then" will lift the function during construction.

Install

npm i lifta-syntax-safe

DownloadsWeekly Downloads

2

Version

1.0.1

License

MIT

Unpacked Size

27.7 kB

Total Files

6

Last publish

Collaborators

  • avatar