add support for member expression super classes - closes #22
This commit is contained in:
parent
7ee8f8ff3d
commit
0664ccff98
@ -13,10 +13,23 @@ exports.ClassExpression = function (node) {
|
||||
return buildClass(node);
|
||||
};
|
||||
|
||||
var getMemberExpressionObject = function (node) {
|
||||
while (node.type === "MemberExpression") {
|
||||
node = node.object;
|
||||
}
|
||||
return node;
|
||||
};
|
||||
|
||||
var buildClass = function (node) {
|
||||
var superName = node.superClass;
|
||||
var className = node.id;
|
||||
|
||||
var superClassReference = node.superClass;
|
||||
|
||||
if (superName && superName.type === "MemberExpression") {
|
||||
superClassReference = getMemberExpressionObject(superName);
|
||||
}
|
||||
|
||||
var container = util.template("class", {
|
||||
CLASS_NAME: className
|
||||
});
|
||||
@ -32,8 +45,8 @@ var buildClass = function (node) {
|
||||
CLASS_NAME: className
|
||||
}, true));
|
||||
|
||||
container.arguments.push(superName);
|
||||
container.callee.params.push(superName);
|
||||
container.arguments.push(superClassReference);
|
||||
container.callee.params.push(superClassReference);
|
||||
}
|
||||
|
||||
buildClassBody(body, className, superName, node);
|
||||
|
||||
7
test/fixtures/classes/super-class-member-expression/actual.js
vendored
Normal file
7
test/fixtures/classes/super-class-member-expression/actual.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
class BaseController extends Chaplin.Controller {
|
||||
|
||||
}
|
||||
|
||||
class BaseController2 extends Chaplin.Controller.Another {
|
||||
|
||||
}
|
||||
27
test/fixtures/classes/super-class-member-expression/expected.js
vendored
Normal file
27
test/fixtures/classes/super-class-member-expression/expected.js
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
var BaseController = function (Chaplin) {
|
||||
function BaseController() {
|
||||
}
|
||||
BaseController.prototype = Object.create(Chaplin.Controller.prototype, {
|
||||
constructor: {
|
||||
value: BaseController,
|
||||
enumerable: false,
|
||||
writable: true,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return BaseController;
|
||||
}(Chaplin);
|
||||
|
||||
var BaseController2 = function (Chaplin) {
|
||||
function BaseController2() {
|
||||
}
|
||||
BaseController2.prototype = Object.create(Chaplin.Controller.Another.prototype, {
|
||||
constructor: {
|
||||
value: BaseController2,
|
||||
enumerable: false,
|
||||
writable: true,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return BaseController2;
|
||||
}(Chaplin);
|
||||
Loading…
x
Reference in New Issue
Block a user