243 lines
6.5 KiB
JSON
243 lines
6.5 KiB
JSON
|
{
|
||
|
"$schema": "http://json-schema.org/draft-07/schema",
|
||
|
"$id": "https://github.com/unicode-org/cldr/blob/maint/maint-46/common/dtd/messageFormat/message.json",
|
||
|
|
||
|
"oneOf": [{ "$ref": "#/$defs/message" }, { "$ref": "#/$defs/select" }],
|
||
|
|
||
|
"$defs": {
|
||
|
"literal": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "literal" },
|
||
|
"value": { "type": "string" }
|
||
|
},
|
||
|
"required": ["type", "value"]
|
||
|
},
|
||
|
"variable": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "variable" },
|
||
|
"name": { "type": "string" }
|
||
|
},
|
||
|
"required": ["type", "name"]
|
||
|
},
|
||
|
"options": {
|
||
|
"type": "array",
|
||
|
"items": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"name": { "type": "string" },
|
||
|
"value": {
|
||
|
"oneOf": [
|
||
|
{ "$ref": "#/$defs/literal" },
|
||
|
{ "$ref": "#/$defs/variable" }
|
||
|
]
|
||
|
}
|
||
|
},
|
||
|
"required": ["name", "value"]
|
||
|
}
|
||
|
},
|
||
|
"attributes": {
|
||
|
"type": "array",
|
||
|
"items": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"name": { "type": "string" },
|
||
|
"value": {
|
||
|
"oneOf": [
|
||
|
{ "$ref": "#/$defs/literal" },
|
||
|
{ "$ref": "#/$defs/variable" }
|
||
|
]
|
||
|
}
|
||
|
},
|
||
|
"required": ["name"]
|
||
|
}
|
||
|
},
|
||
|
|
||
|
"function-annotation": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "function" },
|
||
|
"name": { "type": "string" },
|
||
|
"options": { "$ref": "#/$defs/options" }
|
||
|
},
|
||
|
"required": ["type", "name"]
|
||
|
},
|
||
|
"unsupported-annotation": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "unsupported-annotation" },
|
||
|
"source": { "type": "string" }
|
||
|
},
|
||
|
"required": ["type", "source"]
|
||
|
},
|
||
|
"annotation": {
|
||
|
"oneOf": [
|
||
|
{ "$ref": "#/$defs/function-annotation" },
|
||
|
{ "$ref": "#/$defs/unsupported-annotation" }
|
||
|
]
|
||
|
},
|
||
|
|
||
|
"literal-expression": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "expression" },
|
||
|
"arg": { "$ref": "#/$defs/literal" },
|
||
|
"annotation": { "$ref": "#/$defs/annotation" },
|
||
|
"attributes": { "$ref": "#/$defs/attributes" }
|
||
|
},
|
||
|
"required": ["type", "arg"]
|
||
|
},
|
||
|
"variable-expression": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "expression" },
|
||
|
"arg": { "$ref": "#/$defs/variable" },
|
||
|
"annotation": { "$ref": "#/$defs/annotation" },
|
||
|
"attributes": { "$ref": "#/$defs/attributes" }
|
||
|
},
|
||
|
"required": ["type", "arg"]
|
||
|
},
|
||
|
"function-expression": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "expression" },
|
||
|
"annotation": { "$ref": "#/$defs/function-annotation" },
|
||
|
"attributes": { "$ref": "#/$defs/attributes" }
|
||
|
},
|
||
|
"required": ["type", "annotation"]
|
||
|
},
|
||
|
"unsupported-expression": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "expression" },
|
||
|
"annotation": { "$ref": "#/$defs/unsupported-annotation" },
|
||
|
"attributes": { "$ref": "#/$defs/attributes" }
|
||
|
},
|
||
|
"required": ["type", "annotation"]
|
||
|
},
|
||
|
"expression": {
|
||
|
"oneOf": [
|
||
|
{ "$ref": "#/$defs/literal-expression" },
|
||
|
{ "$ref": "#/$defs/variable-expression" },
|
||
|
{ "$ref": "#/$defs/function-expression" },
|
||
|
{ "$ref": "#/$defs/unsupported-expression" }
|
||
|
]
|
||
|
},
|
||
|
|
||
|
"markup": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "markup" },
|
||
|
"kind": { "oneOf": [ "open", "standalone", "close" ] },
|
||
|
"name": { "type": "string" },
|
||
|
"options": { "$ref": "#/$defs/options" },
|
||
|
"attributes": { "$ref": "#/$defs/attributes" }
|
||
|
},
|
||
|
"required": ["type", "kind", "name"]
|
||
|
},
|
||
|
|
||
|
"pattern": {
|
||
|
"type": "array",
|
||
|
"items": {
|
||
|
"oneOf": [
|
||
|
{ "type": "string" },
|
||
|
{ "$ref": "#/$defs/expression" },
|
||
|
{ "$ref": "#/$defs/markup" }
|
||
|
]
|
||
|
}
|
||
|
},
|
||
|
|
||
|
"input-declaration": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "input" },
|
||
|
"name": { "type": "string" },
|
||
|
"value": { "$ref": "#/$defs/variable-expression" }
|
||
|
},
|
||
|
"required": ["type", "name", "value"]
|
||
|
},
|
||
|
"local-declaration": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "local" },
|
||
|
"name": { "type": "string" },
|
||
|
"value": { "$ref": "#/$defs/expression" }
|
||
|
},
|
||
|
"required": ["type", "name", "value"]
|
||
|
},
|
||
|
"unsupported-statement": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "unsupported-statement" },
|
||
|
"keyword": { "type": "string" },
|
||
|
"body": { "type": "string" },
|
||
|
"expressions": {
|
||
|
"type": "array",
|
||
|
"items": { "$ref": "#/$defs/expression" }
|
||
|
}
|
||
|
},
|
||
|
"required": ["type", "keyword", "expressions"]
|
||
|
},
|
||
|
"declarations": {
|
||
|
"type": "array",
|
||
|
"items": {
|
||
|
"oneOf": [
|
||
|
{ "$ref": "#/$defs/input-declaration" },
|
||
|
{ "$ref": "#/$defs/local-declaration" },
|
||
|
{ "$ref": "#/$defs/unsupported-statement" }
|
||
|
]
|
||
|
}
|
||
|
},
|
||
|
|
||
|
"variant-key": {
|
||
|
"oneOf": [
|
||
|
{ "$ref": "#/$defs/literal" },
|
||
|
{
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "*" },
|
||
|
"value": { "type": "string" }
|
||
|
},
|
||
|
"required": ["type"]
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
"message": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "message" },
|
||
|
"declarations": { "$ref": "#/$defs/declarations" },
|
||
|
"pattern": { "$ref": "#/$defs/pattern" }
|
||
|
},
|
||
|
"required": ["type", "declarations", "pattern"]
|
||
|
},
|
||
|
"select": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"type": { "const": "select" },
|
||
|
"declarations": { "$ref": "#/$defs/declarations" },
|
||
|
"selectors": {
|
||
|
"type": "array",
|
||
|
"items": { "$ref": "#/$defs/expression" }
|
||
|
},
|
||
|
"variants": {
|
||
|
"type": "array",
|
||
|
"items": {
|
||
|
"type": "object",
|
||
|
"properties": {
|
||
|
"keys": {
|
||
|
"type": "array",
|
||
|
"items": { "$ref": "#/$defs/variant-key" }
|
||
|
},
|
||
|
"value": { "$ref": "#/$defs/pattern" }
|
||
|
},
|
||
|
"required": ["keys", "value"]
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
"required": ["type", "declarations", "selectors", "variants"]
|
||
|
}
|
||
|
}
|
||
|
}
|