nicer automatic reference variables for comptued property names and property method assignment #54
This commit is contained in:
@@ -19,21 +19,7 @@ exports.ObjectExpression = function (node, parent, file) {
|
||||
|
||||
if (!hasComputed) return;
|
||||
|
||||
var objIdNode;
|
||||
|
||||
if (parent.type === "AssignmentExpression") {
|
||||
objIdNode = parent.left;
|
||||
} else if (parent.type === "VariableDeclarator") {
|
||||
objIdNode = parent.id;
|
||||
}
|
||||
|
||||
var objId = "ref";
|
||||
|
||||
if (objIdNode && objIdNode.type === "Identifier") {
|
||||
objId = objIdNode.name;
|
||||
}
|
||||
|
||||
objId = b.identifier(file.generateUid(objId));
|
||||
var objId = util.getUid(parent, file);
|
||||
|
||||
var container = util.template("function-return-obj", {
|
||||
KEY: objId,
|
||||
|
||||
@@ -20,7 +20,7 @@ exports.ObjectExpression = function (node, parent, file) {
|
||||
|
||||
if (_.isEmpty(mutatorMap)) return;
|
||||
|
||||
var objId = b.identifier(file.generateUid("ref"));
|
||||
var objId = util.getUid(parent, file);
|
||||
|
||||
return util.template("object-define-properties-closure", {
|
||||
KEY: objId,
|
||||
|
||||
@@ -20,6 +20,24 @@ exports.ensureBlock = function (node) {
|
||||
node.body = b.blockStatement(block);
|
||||
};
|
||||
|
||||
exports.getUid = function (parent, file) {
|
||||
var node;
|
||||
|
||||
if (parent.type === "AssignmentExpression") {
|
||||
node = parent.left;
|
||||
} else if (parent.type === "VariableDeclarator") {
|
||||
node = parent.id;
|
||||
}
|
||||
|
||||
var id = "ref";
|
||||
|
||||
if (node && node.type === "Identifier") {
|
||||
id = node.name;
|
||||
}
|
||||
|
||||
return b.identifier(file.generateUid(id));
|
||||
};
|
||||
|
||||
exports.isAbsolute = function (loc) {
|
||||
if (!loc) return false;
|
||||
if (loc[0] === "/") return true; // unix
|
||||
@@ -245,6 +263,11 @@ exports.parse = function (opts, code, callback) {
|
||||
}
|
||||
};
|
||||
|
||||
exports.parseNoProperties = function (loc, code) {
|
||||
var ast = exports.parse({ filename: loc }, code).program;
|
||||
return exports.removeProperties(ast);
|
||||
};
|
||||
|
||||
try {
|
||||
exports.templates = require("../../templates.json");
|
||||
} catch (err) {
|
||||
@@ -266,8 +289,6 @@ try {
|
||||
var loc = templatesLoc + "/" + name;
|
||||
var code = fs.readFileSync(loc, "utf8");
|
||||
|
||||
var ast = exports.parse({ filename: loc }, code).program;
|
||||
ast = exports.removeProperties(ast);
|
||||
exports.templates[key] = ast;
|
||||
exports.templates[key] = exports.parseNoProperties(loc, code);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user