Files
react/vendor/fbtransform/visitors.js
T
Paul O’Shannessy 75897c2dcd Initial public release
2013-05-29 12:54:02 -07:00

52 lines
1.2 KiB
JavaScript

/*global exports:true*/
var classes = require('./transforms/classes');
var react = require('./transforms/react');
var reactDisplayName = require('./transforms/reactDisplayName');
/**
* Map from transformName => orderedListOfVisitors.
*/
var transformVisitors = {
'es6-classes': [
classes.visitClassExpression,
classes.visitClassDeclaration,
classes.visitSuperCall,
classes.visitPrivateProperty
]
};
transformVisitors.react = transformVisitors[
"es6-classes"
].concat([
react.visitReactTag,
reactDisplayName.visitReactDisplayName
]);
/**
* Specifies the order in which each transform should run.
*/
var transformRunOrder = [
'es6-classes',
'react'
];
/**
* Given a list of transform names, return the ordered list of visitors to be
* passed to the transform() function.
*
* @param {array?} excludes
* @return {array}
*/
function getVisitorsList(excludes) {
var ret = [];
for (var i = 0, il = transformRunOrder.length; i < il; i++) {
if (!excludes || excludes.indexOf(transformRunOrder[i]) === -1) {
ret = ret.concat(transformVisitors[transformRunOrder[i]]);
}
}
return ret;
}
exports.getVisitorsList = getVisitorsList;
exports.transformVisitors = transformVisitors;