@@ -164,14 +164,13 @@ function serializeElement(element) {
164
164
165
165
function serializePlaceable ( placeable ) {
166
166
const expr = placeable . expression ;
167
-
168
167
switch ( expr . type ) {
169
168
case "Placeable" :
170
169
return `{${ serializePlaceable ( expr ) } }` ;
171
170
case "SelectExpression" :
172
171
// Special-case select expression to control the whitespace around the
173
172
// opening and the closing brace.
174
- return `{ ${ serializeSelectExpression ( expr ) } }` ;
173
+ return `{ ${ serializeExpression ( expr ) } }` ;
175
174
default :
176
175
return `{ ${ serializeExpression ( expr ) } }` ;
177
176
}
@@ -186,15 +185,32 @@ function serializeExpression(expr) {
186
185
return expr . value ;
187
186
case "VariableReference" :
188
187
return `$${ expr . id . name } ` ;
189
- case "TermReference" :
190
- let term = { ...expr , id : { name : `-${ expr . id . name } ` } } ;
191
- return serializeReferenceExpression ( term ) ;
192
- case "MessageReference" :
193
- return serializeReferenceExpression ( expr ) ;
188
+ case "TermReference" : {
189
+ let out = `-${ expr . id . name } ` ;
190
+ if ( expr . attribute ) {
191
+ out += `.${ expr . attribute . name } ` ;
192
+ }
193
+ if ( expr . arguments ) {
194
+ out += serializeCallArguments ( expr . arguments ) ;
195
+ }
196
+ return out ;
197
+ }
198
+ case "MessageReference" : {
199
+ let out = expr . id . name ;
200
+ if ( expr . attribute ) {
201
+ out += `.${ expr . attribute . name } ` ;
202
+ }
203
+ return out ;
204
+ }
194
205
case "FunctionReference" :
195
- return serializeReferenceExpression ( expr ) ;
196
- case "SelectExpression" :
197
- return serializeSelectExpression ( expr ) ;
206
+ return `${ expr . id . name } ${ serializeCallArguments ( expr . arguments ) } ` ;
207
+ case "SelectExpression" : {
208
+ let out = `${ serializeExpression ( expr . selector ) } ->` ;
209
+ for ( let variant of expr . variants ) {
210
+ out += serializeVariant ( variant ) ;
211
+ }
212
+ return `${ out } \n` ;
213
+ }
198
214
case "Placeable" :
199
215
return serializePlaceable ( expr ) ;
200
216
default :
@@ -203,32 +219,6 @@ function serializeExpression(expr) {
203
219
}
204
220
205
221
206
- function serializeReferenceExpression ( expr ) {
207
- let parts = [ expr . id . name ] ;
208
- if ( expr . attribute ) {
209
- parts . push ( `.${ expr . attribute . name } ` ) ;
210
- }
211
- if ( expr . arguments ) {
212
- parts . push ( serializeCallArguments ( expr . arguments ) ) ;
213
- }
214
- return parts . join ( "" ) ;
215
- }
216
-
217
-
218
- function serializeSelectExpression ( expr ) {
219
- const parts = [ ] ;
220
- const selector = `${ serializeExpression ( expr . selector ) } ->` ;
221
- parts . push ( selector ) ;
222
-
223
- for ( const variant of expr . variants ) {
224
- parts . push ( serializeVariant ( variant ) ) ;
225
- }
226
-
227
- parts . push ( "\n" ) ;
228
- return parts . join ( "" ) ;
229
- }
230
-
231
-
232
222
function serializeVariant ( variant ) {
233
223
const key = serializeVariantKey ( variant . key ) ;
234
224
const value = indent ( serializePattern ( variant . value ) ) ;
0 commit comments