add back runtime - fixes #651

This commit is contained in:
Sebastian McKenzie
2015-02-01 16:38:13 +11:00
parent 2cdb4e3343
commit 27da6de723
10 changed files with 72 additions and 18 deletions

13
lib/6to5/build-helpers.js Normal file
View File

@@ -0,0 +1,13 @@
var File = require("./file");
var util = require("./util");
var each = require("lodash/collection/each");
var t = require("./types");
module.exports = function (body, namespace) {
each(File.helpers, function (name) {
var key = t.identifier(t.toIdentifier(name));
body.push(t.expressionStatement(
t.assignmentExpression("=", t.memberExpression(namespace, key), util.template(name))
));
});
};

26
lib/6to5/build-runtime.js Normal file
View File

@@ -0,0 +1,26 @@
"use strict";
var buildHelpers = require("./build-helpers");
var generator = require("./generation");
var util = require("./util");
var t = require("./types");
var _ = require("lodash");
module.exports = function () {
var namespace = t.identifier("to5Runtime");
var body = [];
var container = t.functionExpression(null, [t.identifier("global")], t.blockStatement(body));
var tree = t.program([t.expressionStatement(t.callExpression(container, [util.template("self-global")]))]);
body.push(t.variableDeclaration("var", [
t.variableDeclarator(
namespace,
t.assignmentExpression("=", t.memberExpression(t.identifier("global"), namespace), t.objectExpression([]))
)
]));
buildHelpers(body, namespace);
return generator(tree).code;
};

View File

@@ -24,7 +24,7 @@ function File(opts) {
this.data = {};
this.lastStatements = [];
this.opts = File.normaliseOptions(opts);
this.opts = this.normaliseOptions(opts);
this.ast = {};
this.buildTransformers();
@@ -76,6 +76,7 @@ File.validOptions = [
"playground",
"experimental",
"resolveModuleSource",
"runtime",
// these are used by plugins
"ignore",
@@ -84,7 +85,7 @@ File.validOptions = [
"accept"
];
File.normaliseOptions = function (opts) {
File.prototype.normaliseOptions = function (opts) {
opts = clone(opts);
for (var key in opts) {
@@ -108,6 +109,7 @@ File.normaliseOptions = function (opts) {
comments: true,
filename: "unknown",
modules: "common",
runtime: false,
loose: [],
code: true,
ast: true
@@ -146,6 +148,10 @@ File.normaliseOptions = function (opts) {
opts.experimental = true;
}
if (opts.runtime) {
this.set("runtimeIdentifier", t.identifier("to5Runtime"));
}
opts.blacklist = transform._ensureTransformerNames("blacklist", opts.blacklist);
opts.whitelist = transform._ensureTransformerNames("whitelist", opts.whitelist);
opts.optional = transform._ensureTransformerNames("optional", opts.optional);

View File

@@ -40,9 +40,11 @@ each(Buffer.prototype, function (fn, key) {
});
CodeGenerator.normaliseOptions = function (code, opts) {
var indent = detectIndent(code);
var style = indent.indent;
if (!style || style === " ") style = " ";
var style = " ";
if (code) {
var style = detectIndent(code).indent;
if (style && style !== " ") style = " ";
}
return merge({
parentheses: true,

View File

@@ -7,6 +7,8 @@ var isFunction = require("lodash/lang/isFunction");
exports.version = require("../../package").version;
exports.runtime = require("./build-runtime");
exports.types = require("./types");
exports.register = function (opts) {