var util = require("../../util");
var t = require("../../types");
var _ = require("lodash");
exports.ObjectExpression = function (node, parent, file) {
var hasComputed = false;
var computed = [];
node.properties = node.properties.filter(function (prop) {
if (prop.computed) {
hasComputed = true;
computed.unshift(prop);
return false;
} else {
return true;
}
});
if (!hasComputed) return;
var objId = util.getUid(parent, file);
var container = util.template("function-return-obj", {
KEY: objId,
OBJECT: node
});
var containerCallee = container.callee.expression;
var containerBody = containerCallee.body.body;
containerCallee._aliasFunction = "arrows";
_.each(computed, function (prop) {
containerBody.unshift(
t.expressionStatement(
t.assignmentExpression(
"=",
t.memberExpression(objId, prop.key, true),
prop.value
)
)
);
});
return container;
};
|