Sweet.js? Macro? É de cumê?
Não, meu sinhô, é bem melhor que isso. :D
Macros são quando você pode mudar ligeiramente
, ou não, o
processamento sintático de uma linguagem para facilitar a sua vida. Lembra do velho swap entre variáveis? Fiz um macro pra ele, se liga:
// wow.js
macro swap {
rule { $x and $y } => {
var tmp = $x;
$x = $y;
$y = tmp
}
}
var a = "a",
b = "b";
console.log(a, b); // => a b
swap a and b;
console.log(a, b); // => b a
Interessado? Agora pra continuar instale o Sweet.js via npm
$ npm install -g sweet.js
Agora você pode compilar os JS com macro assim:
$ sjs wow.js -o output.js
Se você compilar o wow.js vai ver ele assim:
var a$381 = 'a', b$382 = 'b';
console.log(a$381, b$382);
var tmp$384 = a$381;
a$381 = b$382;
b$382 = tmp$384;
console.log(a$381, b$382);
Gaaabrieel-san, mas o que diabos é isso que ele fez com as variáveis? Coisa mais feia!
Calma, isso se chama
"higienização" e serve pra prevenir conflitos entre variáveis, por exemplo:
var tmp = "tmp", b = "b";
swap tmp and b;
// ...
// output.js
// Sem higienização
var tmp = "tmp", b = "b";
var tmp = tmp;
tmp = b;
b = tmp;
Viu? So many conflicts, wow!
Isso é só a ponta do Iceberg :p
calm down and wait for more in soon