add support for sourceMapObject option, add support for source maps, update to changed api
This commit is contained in:
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user