in python/moz/l10n/formats/mf2/to_json.py [0:0]
def mf2_to_json(message: Message) -> dict[str, Any]:
"""
Represent a message using the MessageFormat 2 data model [JSON Schema](https://github.com/unicode-org/message-format-wg/blob/main/spec/data-model/message.json).
Does not validate the message; for that, use `mf2_validate_message()`.
"""
json_declarations = [
{
"type": (
"input"
if isinstance(expr.arg, VariableRef) and expr.arg.name == name
else "local"
),
"name": name,
"value": _expression(expr),
}
for name, expr in message.declarations.items()
]
if isinstance(message, PatternMessage):
return {
"type": "message",
"declarations": json_declarations,
"pattern": _pattern(message.pattern),
}
else:
assert isinstance(message, SelectMessage)
return {
"type": "select",
"declarations": json_declarations,
"selectors": [_variable(sel) for sel in message.selectors],
"variants": [
{"keys": [_key(key) for key in keys], "value": _pattern(pattern)}
for keys, pattern in message.variants.items()
],
}