add computed property names support
This commit is contained in:
32
lib/6to5/transformers/computed-property-names.js
Normal file
32
lib/6to5/transformers/computed-property-names.js
Normal file
@@ -0,0 +1,32 @@
|
||||
var util = require("../util");
|
||||
var _ = require("lodash");
|
||||
|
||||
exports.ObjectExpression = function (node) {
|
||||
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 container = util.template("function-return-obj", {
|
||||
OBJECT: node
|
||||
});
|
||||
|
||||
_.each(computed, function (prop) {
|
||||
container.callee.body.body.unshift(util.template("obj-key-set", {
|
||||
KEY: prop.key,
|
||||
VALUE: prop.value
|
||||
}, true));
|
||||
});
|
||||
|
||||
return container;
|
||||
};
|
||||
6
test/fixtures/computed-property-names/mixed/actual.js
vendored
Normal file
6
test/fixtures/computed-property-names/mixed/actual.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
var obj = {
|
||||
["x" + foo]: "heh",
|
||||
["y" + bar]: "noo",
|
||||
foo: "foo",
|
||||
bar: "bar"
|
||||
};
|
||||
8
test/fixtures/computed-property-names/mixed/expected.js
vendored
Normal file
8
test/fixtures/computed-property-names/mixed/expected.js
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
var obj = function (obj) {
|
||||
obj["x" + foo] = "heh";
|
||||
obj["y" + bar] = "noo";
|
||||
return obj;
|
||||
}({
|
||||
foo: "foo",
|
||||
bar: "bar"
|
||||
});
|
||||
4
test/fixtures/computed-property-names/multiple/actual.js
vendored
Normal file
4
test/fixtures/computed-property-names/multiple/actual.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
var obj = {
|
||||
["x" + foo]: "heh",
|
||||
["y" + bar]: "noo"
|
||||
};
|
||||
5
test/fixtures/computed-property-names/multiple/expected.js
vendored
Normal file
5
test/fixtures/computed-property-names/multiple/expected.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
var obj = function (obj) {
|
||||
obj["x" + foo] = "heh";
|
||||
obj["y" + bar] = "noo";
|
||||
return obj;
|
||||
}({});
|
||||
3
test/fixtures/computed-property-names/single/actual.js
vendored
Normal file
3
test/fixtures/computed-property-names/single/actual.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
var obj = {
|
||||
["x" + foo]: "heh"
|
||||
};
|
||||
4
test/fixtures/computed-property-names/single/expected.js
vendored
Normal file
4
test/fixtures/computed-property-names/single/expected.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
var obj = function (obj) {
|
||||
obj["x" + foo] = "heh";
|
||||
return obj;
|
||||
}({});
|
||||
Reference in New Issue
Block a user