move declaration insertion to a hidden transformer, add tabWidth to recast prettyPrint

This commit is contained in:
Sebastian McKenzie 2014-10-18 15:45:22 +11:00
parent 234d9997c8
commit d3b088cc6d
3 changed files with 24 additions and 14 deletions

View File

@ -22,8 +22,7 @@ File.normaliseOptions = function (opts) {
blacklist: [],
whitelist: [],
sourceMap: false,
filename: "unknown",
format: {}
filename: "unknown"
});
_.defaults(opts, {
@ -80,14 +79,6 @@ File.prototype.transform = function (ast) {
transformer.transform(self);
});
var body = ast.program.body;
_.each(this.declarations, function (declar) {
body.unshift(b.variableDeclaration("var", [
b.variableDeclarator(declar.uid, declar.node)
]));
});
return this.generate();
};
@ -95,7 +86,10 @@ File.prototype.generate = function () {
var opts = this.opts;
var ast = this.ast;
var printOpts = {};
var printOpts = {
tabWidth: 2
};
if (opts.sourceMap) {
printOpts.sourceMapName = opts.sourceMapName;
}

View File

@ -39,11 +39,13 @@ transform.test = function (task, assert) {
var actualCode = actual.code.trim();
var expectCode = expect.code.trim();
var printOpts = { tabWidth: 2 };
result = transform(actualCode, getOpts(actual.filename));
actualCode = recast.prettyPrint(result.ast).code;
actualCode = recast.prettyPrint(result.ast, printOpts).code;
var expectAst = util.parse(expect, expectCode);
var expectResult = recast.prettyPrint(expectAst);
var expectResult = recast.prettyPrint(expectAst, printOpts);
expectCode = expectResult.code;
assert.equal(actualCode, expectCode);
@ -98,7 +100,9 @@ transform.transformers = {
jsx: require("./transformers/jsx"),
_aliasFunctions: require("./transformers/_alias-functions"),
_blockHoist: require("./transformers/_block-hoist")
_blockHoist: require("./transformers/_block-hoist"),
_declarations: require("./transformers/_declarations"),
_useStrict: require("./transformers/_use-strict")
};
_.each(transform.transformers, function (transformer, key) {

View File

@ -0,0 +1,12 @@
var b = require("recast").types.builders;
var _ = require("lodash");
module.exports = function (ast, file) {
var body = ast.program.body;
_.each(file.declarations, function (declar) {
body.unshift(b.variableDeclaration("var", [
b.variableDeclarator(declar.uid, declar.node)
]));
});
};