1
1
'use strict' ;
2
2
/* @flow */
3
3
4
+ const generate = require ( 'babel-generator' ) . default ;
5
+
4
6
var namedTypes = {
5
7
NumberTypeAnnotation : 'number' ,
6
8
BooleanTypeAnnotation : 'boolean' ,
@@ -14,12 +16,6 @@ var oneToOne = {
14
16
VoidTypeAnnotation : 'VoidLiteral'
15
17
} ;
16
18
17
- var literalTypes = {
18
- BooleanLiteralTypeAnnotation : 'BooleanLiteralType' ,
19
- NumericLiteralTypeAnnotation : 'NumericLiteralType' ,
20
- StringLiteralTypeAnnotation : 'StringLiteralType'
21
- } ;
22
-
23
19
function propertyToField ( property ) {
24
20
var type = flowDoctrine ( property . value ) ;
25
21
if ( property . optional ) {
@@ -116,15 +112,19 @@ function flowDoctrine(type /*: Object */) /*: DoctrineType*/ {
116
112
type : 'TypeApplication' ,
117
113
expression : {
118
114
type : 'NameExpression' ,
119
- name : type . id . name
115
+ name : generate ( type . id , {
116
+ compact : true
117
+ } ) . code
120
118
} ,
121
119
applications : type . typeParameters . params . map ( flowDoctrine )
122
120
} ;
123
121
}
124
122
125
123
return {
126
124
type : 'NameExpression' ,
127
- name : type . id . name
125
+ name : generate ( type . id , {
126
+ compact : true
127
+ } ) . code
128
128
} ;
129
129
130
130
case 'ObjectTypeAnnotation' :
@@ -137,20 +137,30 @@ function flowDoctrine(type /*: Object */) /*: DoctrineType*/ {
137
137
138
138
return {
139
139
type : 'NameExpression' ,
140
- name : type . id . name
140
+ name : generate ( type . id , {
141
+ compact : true
142
+ } ) . code
143
+ } ;
144
+ case 'BooleanLiteralTypeAnnotation' :
145
+ return {
146
+ type : 'BooleanLiteralType' ,
147
+ value : type . value
148
+ } ;
149
+ case 'NumericLiteralTypeAnnotation' :
150
+ return {
151
+ type : 'NumericLiteralType' ,
152
+ value : type . value
153
+ } ;
154
+ case 'StringLiteralTypeAnnotation' :
155
+ return {
156
+ type : 'StringLiteralType' ,
157
+ value : type . value
158
+ } ;
159
+ default :
160
+ return {
161
+ type : 'AllLiteral'
141
162
} ;
142
163
}
143
-
144
- if ( type . type in literalTypes ) {
145
- return {
146
- type : literalTypes [ type . type ] ,
147
- value : type . value
148
- } ;
149
- }
150
-
151
- return {
152
- type : 'AllLiteral'
153
- } ;
154
164
}
155
165
156
166
module . exports = flowDoctrine ;
0 commit comments