add support for sourceMapObject option, add support for source maps, update to changed api

This commit is contained in:
Sebastian McKenzie
2014-10-01 11:04:41 +10:00
parent 5b694bdbef
commit 650ff2e735

View File

@@ -8,22 +8,22 @@ var transform = module.exports = function (code, opts) {
opts = opts || {};
_.defaults(opts, {
blacklist: [],
whitelist: [],
sourceMap: false,
filename: "unknown",
format: {}
sourceMapObject: false,
blacklist: [],
whitelist: [],
sourceMap: false,
filename: "unknown",
format: {}
});
var tree;
if (opts.sourceMapObject) opts.sourceMap = true;
try {
tree = util.parse(code);
} catch (err) {
err.message = opts.filename + ": " + err.message;
throw err;
}
return util.parse(opts.filename, code, function (tree) {
return transform._run(code, tree, opts);
}, true);
};
transform._run = function (code, tree, opts) {
traverse.replace(tree, function (node) {
if (node.type === "EmptyStatement") {
return traverse.Delete;
@@ -60,7 +60,11 @@ var transform = module.exports = function (code, opts) {
var result = escodegen.generate(tree, genOpts);
if (genOpts.sourceMapWithCode) {
return result.code + "\n" + util.sourceMapToComment(result.map) + "\n";
if (opts.sourceMapObject) {
return result;
} else {
return result.code + "\n" + util.sourceMapToComment(result.map) + "\n";
}
} else {
return result + "\n";
}
@@ -77,23 +81,21 @@ transform._runTransformer = function (transformer, tree, opts, generateUid) {
});
};
transform.test = function (actual, expect, opts) {
expect = [].concat(expect).join("\n");
actual = [].concat(actual).join("\n");
transform.test = function (actual, expect, opts, debug) {
opts = opts || {};
_.defaults(opts, { filename: "test" });
actual = util.parse(transform(actual, opts));
expect = util.parse(expect);
var actualCode = actual.code.trim();
var transformedCode = transform(actualCode, opts);
var actualAst = util.parse(actual.filename, transformedCode);
try {
assert.deepEqual(actual, expect);
} catch (err) {
actual = escodegen.generate(actual);
expect = escodegen.generate(expect);
assert.equal(actual, expect);
}
var expectCode = expect.code.trim();
var expectAst = util.parse(expect.filename, expectCode);
actualCode = escodegen.generate(actualAst);
expectCode = escodegen.generate(expectAst);
assert.equal(actualCode, expectCode);
};
transform.transformers = {