use Array.from on single block array comprehensions - closes #199

This commit is contained in:
Sebastian McKenzie
2014-11-22 23:44:12 +11:00
parent 286404c6f2
commit 717e6df407
5 changed files with 23 additions and 4 deletions

View File

@@ -2,16 +2,21 @@ var util = require("../../util");
var t = require("../../types");
var _ = require("lodash");
var singleArrayExpression = function (node) {
var single = function (node) {
var block = node.blocks[0];
var templateName = "array-expression-comprehension-map";
if (node.filter) templateName = "array-expression-comprehension-filter";
var right = block.right;
if (!t.isArrayExpression(right)) {
right = util.template("array-from", { VALUE: right });
}
var result = util.template(templateName, {
STATEMENT: node.body,
FILTER: node.filter,
ARRAY: block.right,
ARRAY: right,
KEY: block.left
});
@@ -73,8 +78,8 @@ exports._build = function (node, buildBody) {
exports.ComprehensionExpression = function (node, parent, file) {
if (node.generator) return;
if (node.blocks.length === 1 && t.isArrayExpression(node.blocks[0].right)) {
return singleArrayExpression(node);
if (node.blocks.length === 1) {
return single(node);
} else {
return multiple(node, file);
}