abstract out build comprehension helper

This commit is contained in:
Sebastian McKenzie
2015-01-15 20:13:16 +11:00
parent 50d7a46c7f
commit 790c924b54
5 changed files with 28 additions and 26 deletions

View File

@@ -0,0 +1,19 @@
var t = require("../../types");
exports.has = function (node) {
var first = node.body[0];
return t.isExpressionStatement(first) && t.isLiteral(first.expression, { value: "use strict" });
};
exports.wrap = function (node, callback) {
var useStrictNode;
if (exports.has(node)) {
useStrictNode = node.body.shift();
}
callback();
if (useStrictNode) {
node.body.unshift(useStrictNode);
}
};

View File

@@ -1,7 +1,7 @@
module.exports = SystemFormatter;
var AMDFormatter = require("./amd");
var useStrict = require("../transformers/use-strict");
var useStrict = require("../helpers/use-strict");
var traverse = require("../../traverse");
var util = require("../../util");
var t = require("../../types");
@@ -171,7 +171,7 @@ SystemFormatter.prototype.transform = function (ast) {
handlerBody.push(returnStatement);
if (useStrict._has(block)) {
if (useStrict.has(block)) {
handlerBody.unshift(block.body.shift());
}

View File

@@ -1,4 +1,4 @@
var useStrict = require("./use-strict");
var useStrict = require("../helpers/use-strict");
var _ = require("lodash");
// Priority:
@@ -18,7 +18,7 @@ exports.Program = {
}
if (!hasChange) return;
useStrict._wrap(node, function () {
useStrict.wrap(node, function () {
var nodePriorities = _.groupBy(node.body, function (bodyNode) {
var priority = bodyNode._blockHoist;
if (priority == null) priority = 1;

View File

@@ -1,4 +1,4 @@
var useStrict = require("./use-strict");
var useStrict = require("../helpers/use-strict");
var t = require("../../types");
exports.secondPass = true;
@@ -8,7 +8,7 @@ exports.Program = function (node) {
var kinds = {};
var kind;
useStrict._wrap(node, function () {
useStrict.wrap(node, function () {
for (var i in node._declarations) {
var declar = node._declarations[i];

View File

@@ -1,26 +1,9 @@
var t = require("../../types");
exports._has = function (node) {
var first = node.body[0];
return t.isExpressionStatement(first) && t.isLiteral(first.expression, { value: "use strict" });
};
exports._wrap = function (node, callback) {
var useStrictNode;
if (exports._has(node)) {
useStrictNode = node.body.shift();
}
callback();
if (useStrictNode) {
node.body.unshift(useStrictNode);
}
};
var useStrict = require("../helpers/use-strict");
var t = require("../../types");
exports.ast = {
exit: function (ast) {
if (!exports._has(ast.program)) {
if (!useStrict.has(ast.program)) {
ast.program.body.unshift(t.expressionStatement(t.literal("use strict")));
}
}