| { | |
| "$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"] | |
| } | |
| } | |
| } |