Skip to content

Commit 07f762f

Browse files
committed
Remove serialize_reference_expression
1 parent 2a18d43 commit 07f762f

File tree

1 file changed

+22
-39
lines changed

1 file changed

+22
-39
lines changed

fluent.syntax/fluent/syntax/serializer.py

Lines changed: 22 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,12 @@ def serialize_element(element):
143143

144144
def serialize_placeable(placeable):
145145
expr = placeable.expression
146-
147146
if isinstance(expr, ast.Placeable):
148147
return "{{{}}}".format(serialize_placeable(expr))
149148
if isinstance(expr, ast.SelectExpression):
150149
# Special-case select expressions to control the withespace around the
151150
# opening and the closing brace.
152-
return "{{ {}}}".format(serialize_select_expression(expr))
151+
return "{{ {}}}".format(serialize_expression(expr))
153152
if isinstance(expr, ast.Expression):
154153
return "{{ {} }}".format(serialize_expression(expr))
155154

@@ -160,49 +159,33 @@ def serialize_expression(expression):
160159
if isinstance(expression, ast.NumberLiteral):
161160
return expression.value
162161
if isinstance(expression, ast.VariableReference):
163-
return '${}'.format(expression.id.name)
162+
return "${}".format(expression.id.name)
164163
if isinstance(expression, ast.TermReference):
165-
return serialize_reference_expression(
166-
expression,
167-
id='-{}'.format(expression.id.name)
168-
)
169-
if isinstance(
170-
expression, (
171-
ast.MessageReference,
172-
ast.FunctionReference,
173-
)
174-
):
175-
return serialize_reference_expression(expression)
164+
out = "-{}".format(expression.id.name)
165+
if expression.attribute is not None:
166+
out += ".{}".format(expression.attribute.name)
167+
if expression.arguments is not None:
168+
out += serialize_call_arguments(expression.arguments)
169+
return out
170+
if isinstance(expression, ast.MessageReference):
171+
out = expression.id.name
172+
if expression.attribute is not None:
173+
out += ".{}".format(expression.attribute.name)
174+
return out
175+
if isinstance(expression, ast.FunctionReference):
176+
args = serialize_call_arguments(expression.arguments)
177+
return "{}{}".format(expression.id.name, args)
176178
if isinstance(expression, ast.SelectExpression):
177-
return serialize_select_expression(expression)
179+
out = "{} ->".format(
180+
serialize_expression(expression.selector))
181+
for variant in expression.variants:
182+
out += serialize_variant(variant)
183+
return "{}\n".format(out)
178184
if isinstance(expression, ast.Placeable):
179185
return serialize_placeable(expression)
180186
raise Exception('Unknown expression type: {}'.format(type(expression)))
181187

182188

183-
def serialize_reference_expression(expression, id=None):
184-
parts = [expression.id.name if id is None else id]
185-
if hasattr(expression, 'attribute') and expression.attribute is not None:
186-
parts.append('.{}'.format(expression.attribute.name))
187-
if hasattr(expression, 'arguments') and expression.arguments is not None:
188-
parts.append(serialize_call_expression(expression.arguments))
189-
return ''.join(parts)
190-
191-
192-
def serialize_select_expression(expr):
193-
parts = []
194-
selector = "{} ->".format(
195-
serialize_expression(expr.selector))
196-
parts.append(selector)
197-
198-
for variant in expr.variants:
199-
parts.append(serialize_variant(variant))
200-
201-
parts.append("\n")
202-
203-
return "".join(parts)
204-
205-
206189
def serialize_variant(variant):
207190
return "\n{}[{}]{}".format(
208191
" *" if variant.default else " ",
@@ -211,7 +194,7 @@ def serialize_variant(variant):
211194
)
212195

213196

214-
def serialize_call_expression(expr):
197+
def serialize_call_arguments(expr):
215198
positional = ", ".join(
216199
serialize_expression(arg) for arg in expr.positional)
217200
named = ", ".join(

0 commit comments

Comments
 (0)