react / react-0.13.3 / examples / basic-commonjs / node_modules / reactify / node_modules / react-tools / vendor / fbtransform / visitors.js
81153 views/*global exports:true*/1var es6ArrowFunctions = require('jstransform/visitors/es6-arrow-function-visitors');2var es6Classes = require('jstransform/visitors/es6-class-visitors');3var es6Destructuring = require('jstransform/visitors/es6-destructuring-visitors');4var es6ObjectConciseMethod = require('jstransform/visitors/es6-object-concise-method-visitors');5var es6ObjectShortNotation = require('jstransform/visitors/es6-object-short-notation-visitors');6var es6RestParameters = require('jstransform/visitors/es6-rest-param-visitors');7var es6Templates = require('jstransform/visitors/es6-template-visitors');8var es7SpreadProperty = require('jstransform/visitors/es7-spread-property-visitors');9var react = require('./transforms/react');10var reactDisplayName = require('./transforms/reactDisplayName');1112/**13* Map from transformName => orderedListOfVisitors.14*/15var transformVisitors = {16'es6-arrow-functions': es6ArrowFunctions.visitorList,17'es6-classes': es6Classes.visitorList,18'es6-destructuring': es6Destructuring.visitorList,19'es6-object-concise-method': es6ObjectConciseMethod.visitorList,20'es6-object-short-notation': es6ObjectShortNotation.visitorList,21'es6-rest-params': es6RestParameters.visitorList,22'es6-templates': es6Templates.visitorList,23'es7-spread-property': es7SpreadProperty.visitorList,24'react': react.visitorList.concat(reactDisplayName.visitorList)25};2627var transformSets = {28'harmony': [29'es6-arrow-functions',30'es6-object-concise-method',31'es6-object-short-notation',32'es6-classes',33'es6-rest-params',34'es6-templates',35'es6-destructuring',36'es7-spread-property'37],38'react': [39'react'40]41};4243/**44* Specifies the order in which each transform should run.45*/46var transformRunOrder = [47'es6-arrow-functions',48'es6-object-concise-method',49'es6-object-short-notation',50'es6-classes',51'es6-rest-params',52'es6-templates',53'es6-destructuring',54'es7-spread-property',55'react'56];5758/**59* Given a list of transform names, return the ordered list of visitors to be60* passed to the transform() function.61*62* @param {array?} excludes63* @return {array}64*/65function getAllVisitors(excludes) {66var ret = [];67for (var i = 0, il = transformRunOrder.length; i < il; i++) {68if (!excludes || excludes.indexOf(transformRunOrder[i]) === -1) {69ret = ret.concat(transformVisitors[transformRunOrder[i]]);70}71}72return ret;73}7475/**76* Given a list of visitor set names, return the ordered list of visitors to be77* passed to jstransform.78*79* @param {array}80* @return {array}81*/82function getVisitorsBySet(sets) {83var visitorsToInclude = sets.reduce(function(visitors, set) {84if (!transformSets.hasOwnProperty(set)) {85throw new Error('Unknown visitor set: ' + set);86}87transformSets[set].forEach(function(visitor) {88visitors[visitor] = true;89});90return visitors;91}, {});9293var visitorList = [];94for (var i = 0; i < transformRunOrder.length; i++) {95if (visitorsToInclude.hasOwnProperty(transformRunOrder[i])) {96visitorList = visitorList.concat(transformVisitors[transformRunOrder[i]]);97}98}99100return visitorList;101}102103exports.getVisitorsBySet = getVisitorsBySet;104exports.getAllVisitors = getAllVisitors;105exports.transformVisitors = transformVisitors;106107108