in python/moz/l10n/formats/mf2/serialize.py [0:0]
def mf2_serialize_message(message: Message) -> str:
"""
Serialize a message using MessageFormat 2 syntax.
Does not validate the message before serialization;
for that, use `mf2_validate_message()`.
"""
if (
isinstance(message, PatternMessage)
and not message.declarations
and (
not message.pattern
or not isinstance(part0 := message.pattern[0], str)
or not complex_start_re.match(part0)
)
):
# simple message
return "".join(mf2_serialize_pattern(message.pattern))
res = ""
for name, expr in message.declarations.items():
# TODO: Fix order by dependencies
if isinstance(expr.arg, VariableRef) and expr.arg.name == name:
res += ".input "
else:
res += f".local ${name} = "
for s in _expression(expr):
res += s
res += "\n"
if isinstance(message, PatternMessage):
for s in _quoted_pattern(message.pattern):
res += s
else:
assert isinstance(message, SelectMessage)
res += ".match"
for sel in message.selectors:
res += f" ${sel.name}"
for keys, pattern in message.variants.items():
res += "\n"
for key in keys:
res += "* " if isinstance(key, CatchallKey) else f"{_literal(key)} "
for s in _quoted_pattern(pattern):
res += s
return res