fix class computed methods
This commit is contained in:
@@ -58,30 +58,35 @@ exports.sourceMapToComment = function (map) {
|
||||
};
|
||||
|
||||
exports.pushMutatorMap = function (mutatorMap, key, kind, method) {
|
||||
var alias = JSON.stringify(traverse.removeProperties(_.cloneDeep(key)));
|
||||
|
||||
var map;
|
||||
if (_.has(mutatorMap, key)) {
|
||||
map = mutatorMap[key];
|
||||
if (_.has(mutatorMap, alias)) {
|
||||
map = mutatorMap[alias];
|
||||
} else {
|
||||
map = {};
|
||||
}
|
||||
mutatorMap[key] = map;
|
||||
mutatorMap[alias] = map;
|
||||
|
||||
if (map[kind]) {
|
||||
throw new Error("a " + kind + " already exists for this property");
|
||||
} else {
|
||||
map[kind] = method;
|
||||
map._key = key;
|
||||
if (method.computed) {
|
||||
map._computed = true;
|
||||
}
|
||||
|
||||
map[kind] = method;
|
||||
};
|
||||
|
||||
exports.buildDefineProperties = function (mutatorMap) {
|
||||
var objExpr = t.objectExpression([]);
|
||||
|
||||
_.each(mutatorMap, function (map, key) {
|
||||
_.each(mutatorMap, function (map) {
|
||||
var mapNode = t.objectExpression([]);
|
||||
|
||||
var propNode = t.property("init", t.identifier(key), mapNode);
|
||||
var propNode = t.property("init", map._key, mapNode, map._computed);
|
||||
|
||||
_.each(map, function (node, key) {
|
||||
if (key[0] === "_") return;
|
||||
|
||||
node = _.clone(node);
|
||||
if (t.isMethodDefinition(node)) node = node.value;
|
||||
mapNode.properties.push(t.property("init", t.identifier(key), node));
|
||||
|
||||
Reference in New Issue
Block a user