Skip to content

Commit 0e22abd

Browse files
authored
(fluent-syntax) Remove serializeReferenceExpression (#351)
1 parent a04dfff commit 0e22abd

File tree

1 file changed

+26
-36
lines changed

1 file changed

+26
-36
lines changed

fluent-syntax/src/serializer.js

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -164,14 +164,13 @@ function serializeElement(element) {
164164

165165
function serializePlaceable(placeable) {
166166
const expr = placeable.expression;
167-
168167
switch (expr.type) {
169168
case "Placeable":
170169
return `{${serializePlaceable(expr)}}`;
171170
case "SelectExpression":
172171
// Special-case select expression to control the whitespace around the
173172
// opening and the closing brace.
174-
return `{ ${serializeSelectExpression(expr)}}`;
173+
return `{ ${serializeExpression(expr)}}`;
175174
default:
176175
return `{ ${serializeExpression(expr)} }`;
177176
}
@@ -186,15 +185,32 @@ function serializeExpression(expr) {
186185
return expr.value;
187186
case "VariableReference":
188187
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+
}
194205
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+
}
198214
case "Placeable":
199215
return serializePlaceable(expr);
200216
default:
@@ -203,32 +219,6 @@ function serializeExpression(expr) {
203219
}
204220

205221

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-
232222
function serializeVariant(variant) {
233223
const key = serializeVariantKey(variant.key);
234224
const value = indent(serializePattern(variant.value));

0 commit comments

Comments
 (0)