From 5d9fc19f76a581e2358604a43e5cb54a26c977e6 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 9 Oct 2014 13:11:07 +1100 Subject: [PATCH] support ClassExpression - fixes #21 --- lib/6to5/templates/class-statement-container.js | 7 +++++++ lib/6to5/templates/class.js | 4 ++-- lib/6to5/transformers/classes.js | 17 +++++++++++++---- 3 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 lib/6to5/templates/class-statement-container.js diff --git a/lib/6to5/templates/class-statement-container.js b/lib/6to5/templates/class-statement-container.js new file mode 100644 index 0000000000..56e8aaa6e9 --- /dev/null +++ b/lib/6to5/templates/class-statement-container.js @@ -0,0 +1,7 @@ +(function () { + function CLASS_NAME() { + + } + + return CLASS_NAME; +})() diff --git a/lib/6to5/templates/class.js b/lib/6to5/templates/class.js index fc3c3ba01a..56e8aaa6e9 100644 --- a/lib/6to5/templates/class.js +++ b/lib/6to5/templates/class.js @@ -1,7 +1,7 @@ -var CLASS_NAME = (function () { +(function () { function CLASS_NAME() { } return CLASS_NAME; -})(); +})() diff --git a/lib/6to5/transformers/classes.js b/lib/6to5/transformers/classes.js index f42c0e09cd..32e2011cfc 100644 --- a/lib/6to5/transformers/classes.js +++ b/lib/6to5/transformers/classes.js @@ -4,14 +4,23 @@ var b = require("ast-types").builders; var _ = require("lodash"); exports.ClassDeclaration = function (node) { + return b.variableDeclaration("var", [ + b.variableDeclarator(node.id, buildClass(node)) + ]); +}; + +exports.ClassExpression = function (node) { + return buildClass(node); +}; + +var buildClass = function (node) { var superName = node.superClass; var className = node.id; - var root = util.template("class", { + var container = util.template("class", { CLASS_NAME: className - }, true); + }); - var container = root.declarations[0].init; var block = container.callee.body; var body = block.body; @@ -31,7 +40,7 @@ exports.ClassDeclaration = function (node) { body.push(returnStatement); - return root; + return container; }; var buildClassBody = function (body, className, superName, node) {