Pipeline.sjs
Version: 1.0.2
Master build:
This library provides pipelining syntax to achieve naturally expressive functional composition with a little help from
Sweet.js.
It can be installed in whichever way you prefer, but I recommend NPM.
The motivation was to make reading functional composition more natural by writing left to right rather than inside out.
My original choice of operator was |>
to match a similar operator in Elixir, but due to some limitations of
Sweet.js this wasn't possible. The examples below show usage with the default >>
operator.
Usage examples
var foo = function(){},
bar = function(){},
baz = function(){};
123 >> foo;
foo >> bar;
123 >> foo >> bar;
123
>> foo
>> bar
>> baz;
foo >> bar >> baz(123);
foo >> bar(1, 2, 3) >> baz;
Transpiling
Whenever you use this or any other Sweet.js macro, you need to run it through sjs
.
$ npm install pipeline.sjs sweet.js
$ node_modules/.bin/sjs -m pipeline.sjs/macro mysweetfile.sjs
Custom operator
You can change the operator used in this macro by running the build script with your new operator.
$ MACRO_OP='>>' npm run build
Contributing
I accept contributions to the source via Pull Request, but passing unit tests
must be included before it will be considered for merge.
$ npm run build
$ npm test
If you have Vagrant installed, you can build the dev environment to assist development.
The repository will be mounted in /srv
.
$ curl -O https://raw.github.com/adlawson/vagrantfiles/master/nodejs/Vagrantfile
$ vagrant up
$ vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64)
$ cd /srv
License
The content of this library is released under the MIT License by Andrew Lawson.
You can find a copy of this license in LICENSE
or at http://www.opensource.org/licenses/mit.