@@ -8,6 +8,7 @@ var es6RestParameters = require('jstransform/visitors/es6-rest-param-visitors');
88var es6Templates = require ( 'jstransform/visitors/es6-template-visitors' ) ;
99var react = require ( './transforms/react' ) ;
1010var reactDisplayName = require ( './transforms/reactDisplayName' ) ;
11+ var typesSyntax = require ( 'jstransform/visitors/type-syntax' ) ;
1112
1213/**
1314 * Map from transformName => orderedListOfVisitors.
@@ -20,13 +21,33 @@ var transformVisitors = {
2021 'es6-object-short-notation' : es6ObjectShortNotation . visitorList ,
2122 'es6-rest-params' : es6RestParameters . visitorList ,
2223 'es6-templates' : es6Templates . visitorList ,
23- 'react' : react . visitorList . concat ( reactDisplayName . visitorList )
24+ 'react' : react . visitorList . concat ( reactDisplayName . visitorList ) ,
25+ 'types' : typesSyntax . visitorList
26+ } ;
27+
28+ var transformSets = {
29+ 'harmony' : [
30+ 'es6-arrow-functions' ,
31+ 'es6-object-concise-method' ,
32+ 'es6-object-short-notation' ,
33+ 'es6-classes' ,
34+ 'es6-rest-params' ,
35+ 'es6-templates' ,
36+ 'es6-destructuring'
37+ ] ,
38+ 'react' : [
39+ 'react'
40+ ] ,
41+ 'type-annotations' : [
42+ 'types'
43+ ]
2444} ;
2545
2646/**
2747 * Specifies the order in which each transform should run.
2848 */
2949var transformRunOrder = [
50+ 'types' ,
3051 'es6-arrow-functions' ,
3152 'es6-object-concise-method' ,
3253 'es6-object-short-notation' ,
@@ -54,5 +75,34 @@ function getAllVisitors(excludes) {
5475 return ret ;
5576}
5677
78+ /**
79+ * Given a list of visitor set names, return the ordered list of visitors to be
80+ * passed to jstransform.
81+ *
82+ * @param {array }
83+ * @return {array }
84+ */
85+ function getVisitorsBySet ( sets ) {
86+ var visitorsToInclude = sets . reduce ( function ( visitors , set ) {
87+ if ( ! transformSets . hasOwnProperty ( set ) ) {
88+ throw new Error ( 'Unknown visitor set: ' + set ) ;
89+ }
90+ transformSets [ set ] . forEach ( function ( visitor ) {
91+ visitors [ visitor ] = true ;
92+ } ) ;
93+ return visitors ;
94+ } , { } ) ;
95+
96+ var visitorList = [ ] ;
97+ for ( var i = 0 ; i < transformRunOrder . length ; i ++ ) {
98+ if ( visitorsToInclude . hasOwnProperty ( transformRunOrder [ i ] ) ) {
99+ visitorList = visitorList . concat ( transformVisitors [ transformRunOrder [ i ] ] ) ;
100+ }
101+ }
102+
103+ return visitorList ;
104+ }
105+
106+ exports . getVisitorsBySet = getVisitorsBySet ;
57107exports . getAllVisitors = getAllVisitors ;
58108exports . transformVisitors = transformVisitors ;
0 commit comments