dry up array comprehension and arrow functions by introducing an alias-functions transformer

This commit is contained in:
Sebastian McKenzie
2014-10-13 05:35:26 +11:00
parent a6ffde6e9b
commit 3d2c41bb5a
10 changed files with 132 additions and 81 deletions

View File

@@ -9,12 +9,14 @@ var single = function (node) {
var templateName = "array-comprehension-map";
if (node.filter) templateName = "array-comprehension-filter";
return util.template(templateName, {
var result = util.template(templateName, {
STATEMENT: node.body,
FILTER: node.filter,
ARRAY: block.right,
KEY: block.left
});
result._aliasFunction = true;
return result;
};
var multiple = function (node, file) {
@@ -23,6 +25,7 @@ var multiple = function (node, file) {
var container = util.template("array-comprehension-container", {
KEY: uid
});
container._aliasFunction = true;
var block = container.callee.body;
var body = block.body;
@@ -47,7 +50,10 @@ var multiple = function (node, file) {
var filter = util.template("if", {
STATEMENT: node.filter
});
// set if body
filter.consequent.body = [child];
child = filter;
}
}
@@ -56,7 +62,10 @@ var multiple = function (node, file) {
ARRAY: self.right,
KEY: self.left
}, true);
// set function body
container2.expression.arguments[0].body.body = [child];
return container2;
};