in python/moz/l10n/formats/mf2/from_json.py [0:0]
def _expression(json: dict[str, Any]) -> Expression:
if json["type"] != "expression":
raise MF2ValidationError(f"Invalid JSON expression type: {json}")
arg = _value(json["arg"]) if "arg" in json else None
json_func = json.get("function", None)
if json_func:
if json_func["type"] != "function":
raise MF2ValidationError(f"Invalid JSON function type: {json_func}")
function = _string(json_func, "name")
options = _options(json_func["options"]) if "options" in json_func else {}
else:
function = None
options = {}
if arg is None and function is None:
raise MF2ValidationError(
f"Invalid JSON expression with no operand and no function: {json}"
)
attributes = _attributes(json["attributes"]) if "attributes" in json else {}
return Expression(arg, function, options, attributes)