Hygienic Macros for JavaScript!
- Documentation at sweetjs.org.
- Overview and motivation in this talk.
- Example macros on the wiki.
- Mailing list for discussion
- IRC channel #sweet.js on irc.mozilla.org
Install with npm:
$ npm install sweet.js
To try it out make a file test_macros.sjs
:
// functions can now be spelled def!
macro def {
case $name:ident $params $body => {
function $name $params $body
}
}
def add (a, b) {
return a + b;
}
console.log( add(3, 7) );
And compile it with sjs
:
$ sjs -o output.js test_macros.sjs
$ node output.js
10
Alternately you can require an sjs file from node. For example, in main.js
add:
var sjs = require('sweet.js'),
example = require('./example');
example.one;
Where ./example.sjs contains:
macro A {
case ($a + $b) => {
$a
}
}
exports.one = A(1 + 2);
And just run main.js
in node.
An AMD loader is provided at require-sweet.
define(['sweeten!a/javascript/dep-with-macros'], function(dep) {
// dep is compiled to JS at this point.
});
Install the dev dependencies:
$ npm install --dev
And run the tests:
$ npm test