bobflux-gen
Version:
Generator for monkey files in bobflux application.
44 lines (43 loc) • 1.92 kB
JavaScript
;
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
var cv = require("./classDeclarationVisitor");
var iv = require("./interfaceDeclarationVisitor");
var pdv = require("./propertyDeclarationVisitor");
var psv = require("./propertySignatureVisitor");
var edv = require("./enumDeclarationVisitor");
var tadv = require("./typeAliasDeclarationVisitor");
var inv = require("./importDeclarionVisitor");
var sfv = require("./sourceFileVisitor");
__export(require("./nodeVisitor"));
function createAllBfgVisitors(saveCallback) {
return createBfgVisitor(edv.create(function (e) { return saveCallback().enums.push(e); }), tadv.create(function (t) { return saveCallback().customTypes.push(t); }), cv.create(function (s) { return saveCallback().states.push(s); }), iv.create(function (s) { return saveCallback().states.push(s); }), pdv.create(function (f) {
var data = saveCallback();
data.states[data.states.length - 1].fields.push(f);
}), psv.create(function (f) {
var data = saveCallback();
data.states[data.states.length - 1].fields.push(f);
}), inv.create(function (i) { return saveCallback().imports.push(i); }), sfv.create(function (sf) {
var data = saveCallback();
data.fileName = sf.fileName;
data.filePath = sf.filePath;
}));
}
exports.createAllBfgVisitors = createAllBfgVisitors;
function createBfgVisitor() {
var visitors = [];
for (var _i = 0; _i < arguments.length; _i++) {
visitors[_i] = arguments[_i];
}
var _visitors = visitors || [];
return {
accept: function (n) {
return _visitors.filter(function (v) { return v.accept(n); }).length > 0;
},
visit: function (n) {
var acceptedVisitor = _visitors.filter(function (v) { return v.accept(n); })[0];
acceptedVisitor.visit(n);
}
};
}