expose transformers and types

This commit is contained in:
Sebastian McKenzie 2014-12-14 12:17:16 +11:00
parent 833a4900da
commit ceb8e812b6
2 changed files with 27 additions and 7 deletions

View File

@ -2,12 +2,13 @@ module.exports = File;
var SHEBANG_REGEX = /^\#\!.*/;
var transform = require("./transformation/transform");
var generate = require("./generation/generator");
var Scope = require("./traverse/scope");
var util = require("./util");
var t = require("./types");
var _ = require("lodash");
var Transformer = require("./transformation/transformer");
var transform = require("./transformation/transform");
var generate = require("./generation/generator");
var Scope = require("./traverse/scope");
var util = require("./util");
var t = require("./types");
var _ = require("lodash");
function File(opts) {
this.opts = File.normaliseOptions(opts);
@ -28,10 +29,21 @@ File.declarations = [
];
File.normaliseOptions = function (opts) {
opts = _.cloneDeep(opts || {});
opts = opts || {};
_.each(opts.transformers, function (transformer, i) {
if (!(transformer instanceof Transformer)) {
throw new TypeError("opts.transformers[" + i + "] isn't an instance of Transformer");
}
});
opts = _.cloneDeep(opts, function (value) {
return value instanceof Transformer ? value : undefined;
});
_.defaults(opts, {
experimental: false,
transformers: [],
playground: false,
whitespace: true,
blacklist: [],
@ -180,6 +192,10 @@ File.prototype.transform = function (ast) {
var self = this;
_.each(this.opts.transformers, function (transformer) {
transformer.transform(self);
});
_.each(transform.transformers, function (transformer) {
transformer.transform(self);
});

View File

@ -3,6 +3,10 @@ var util = require("./util");
var fs = require("fs");
var _ = require("lodash");
exports.Transformer = require("./transformation/transformer");
exports.types = require("./types");
exports.runtime = require("./runtime");
exports.register = function (opts) {