xref: /aosp_15_r20/external/cldr/common/dtd/messageFormat/message.json (revision 912701f9769bb47905792267661f0baf2b85bed5)
1*912701f9SAndroid Build Coastguard Worker{
2*912701f9SAndroid Build Coastguard Worker  "$schema": "http://json-schema.org/draft-07/schema",
3*912701f9SAndroid Build Coastguard Worker  "$id": "https://github.com/unicode-org/cldr/blob/maint/maint-45/common/dtd/messageFormat/message.json",
4*912701f9SAndroid Build Coastguard Worker
5*912701f9SAndroid Build Coastguard Worker  "oneOf": [{ "$ref": "#/$defs/message" }, { "$ref": "#/$defs/select" }],
6*912701f9SAndroid Build Coastguard Worker
7*912701f9SAndroid Build Coastguard Worker  "$defs": {
8*912701f9SAndroid Build Coastguard Worker    "literal": {
9*912701f9SAndroid Build Coastguard Worker      "type": "object",
10*912701f9SAndroid Build Coastguard Worker      "properties": {
11*912701f9SAndroid Build Coastguard Worker        "type": { "const": "literal" },
12*912701f9SAndroid Build Coastguard Worker        "value": { "type": "string" }
13*912701f9SAndroid Build Coastguard Worker      },
14*912701f9SAndroid Build Coastguard Worker      "required": ["type", "value"]
15*912701f9SAndroid Build Coastguard Worker    },
16*912701f9SAndroid Build Coastguard Worker    "variable": {
17*912701f9SAndroid Build Coastguard Worker      "type": "object",
18*912701f9SAndroid Build Coastguard Worker      "properties": {
19*912701f9SAndroid Build Coastguard Worker        "type": { "const": "variable" },
20*912701f9SAndroid Build Coastguard Worker        "name": { "type": "string" }
21*912701f9SAndroid Build Coastguard Worker      },
22*912701f9SAndroid Build Coastguard Worker      "required": ["type", "name"]
23*912701f9SAndroid Build Coastguard Worker    },
24*912701f9SAndroid Build Coastguard Worker    "options": {
25*912701f9SAndroid Build Coastguard Worker      "type": "array",
26*912701f9SAndroid Build Coastguard Worker      "items": {
27*912701f9SAndroid Build Coastguard Worker        "type": "object",
28*912701f9SAndroid Build Coastguard Worker        "properties": {
29*912701f9SAndroid Build Coastguard Worker          "name": { "type": "string" },
30*912701f9SAndroid Build Coastguard Worker          "value": {
31*912701f9SAndroid Build Coastguard Worker            "oneOf": [
32*912701f9SAndroid Build Coastguard Worker              { "$ref": "#/$defs/literal" },
33*912701f9SAndroid Build Coastguard Worker              { "$ref": "#/$defs/variable" }
34*912701f9SAndroid Build Coastguard Worker            ]
35*912701f9SAndroid Build Coastguard Worker          }
36*912701f9SAndroid Build Coastguard Worker        },
37*912701f9SAndroid Build Coastguard Worker        "required": ["name", "value"]
38*912701f9SAndroid Build Coastguard Worker      }
39*912701f9SAndroid Build Coastguard Worker    },
40*912701f9SAndroid Build Coastguard Worker    "attributes": {
41*912701f9SAndroid Build Coastguard Worker      "type": "array",
42*912701f9SAndroid Build Coastguard Worker      "items": {
43*912701f9SAndroid Build Coastguard Worker        "type": "object",
44*912701f9SAndroid Build Coastguard Worker        "properties": {
45*912701f9SAndroid Build Coastguard Worker          "name": { "type": "string" },
46*912701f9SAndroid Build Coastguard Worker          "value": {
47*912701f9SAndroid Build Coastguard Worker            "oneOf": [
48*912701f9SAndroid Build Coastguard Worker              { "$ref": "#/$defs/literal" },
49*912701f9SAndroid Build Coastguard Worker              { "$ref": "#/$defs/variable" }
50*912701f9SAndroid Build Coastguard Worker            ]
51*912701f9SAndroid Build Coastguard Worker          }
52*912701f9SAndroid Build Coastguard Worker        },
53*912701f9SAndroid Build Coastguard Worker        "required": ["name"]
54*912701f9SAndroid Build Coastguard Worker      }
55*912701f9SAndroid Build Coastguard Worker    },
56*912701f9SAndroid Build Coastguard Worker
57*912701f9SAndroid Build Coastguard Worker    "function-annotation": {
58*912701f9SAndroid Build Coastguard Worker      "type": "object",
59*912701f9SAndroid Build Coastguard Worker      "properties": {
60*912701f9SAndroid Build Coastguard Worker        "type": { "const": "function" },
61*912701f9SAndroid Build Coastguard Worker        "name": { "type": "string" },
62*912701f9SAndroid Build Coastguard Worker        "options": { "$ref": "#/$defs/options" }
63*912701f9SAndroid Build Coastguard Worker      },
64*912701f9SAndroid Build Coastguard Worker      "required": ["type", "name"]
65*912701f9SAndroid Build Coastguard Worker    },
66*912701f9SAndroid Build Coastguard Worker    "unsupported-annotation": {
67*912701f9SAndroid Build Coastguard Worker      "type": "object",
68*912701f9SAndroid Build Coastguard Worker      "properties": {
69*912701f9SAndroid Build Coastguard Worker        "type": { "const": "unsupported-annotation" },
70*912701f9SAndroid Build Coastguard Worker        "source": { "type": "string" }
71*912701f9SAndroid Build Coastguard Worker      },
72*912701f9SAndroid Build Coastguard Worker      "required": ["type", "source"]
73*912701f9SAndroid Build Coastguard Worker    },
74*912701f9SAndroid Build Coastguard Worker    "annotation": {
75*912701f9SAndroid Build Coastguard Worker      "oneOf": [
76*912701f9SAndroid Build Coastguard Worker        { "$ref": "#/$defs/function-annotation" },
77*912701f9SAndroid Build Coastguard Worker        { "$ref": "#/$defs/unsupported-annotation" }
78*912701f9SAndroid Build Coastguard Worker      ]
79*912701f9SAndroid Build Coastguard Worker    },
80*912701f9SAndroid Build Coastguard Worker
81*912701f9SAndroid Build Coastguard Worker    "literal-expression": {
82*912701f9SAndroid Build Coastguard Worker      "type": "object",
83*912701f9SAndroid Build Coastguard Worker      "properties": {
84*912701f9SAndroid Build Coastguard Worker        "type": { "const": "expression" },
85*912701f9SAndroid Build Coastguard Worker        "arg": { "$ref": "#/$defs/literal" },
86*912701f9SAndroid Build Coastguard Worker        "annotation": { "$ref": "#/$defs/annotation" },
87*912701f9SAndroid Build Coastguard Worker        "attributes": { "$ref": "#/$defs/attributes" }
88*912701f9SAndroid Build Coastguard Worker      },
89*912701f9SAndroid Build Coastguard Worker      "required": ["type", "arg"]
90*912701f9SAndroid Build Coastguard Worker    },
91*912701f9SAndroid Build Coastguard Worker    "variable-expression": {
92*912701f9SAndroid Build Coastguard Worker      "type": "object",
93*912701f9SAndroid Build Coastguard Worker      "properties": {
94*912701f9SAndroid Build Coastguard Worker        "type": { "const": "expression" },
95*912701f9SAndroid Build Coastguard Worker        "arg": { "$ref": "#/$defs/variable" },
96*912701f9SAndroid Build Coastguard Worker        "annotation": { "$ref": "#/$defs/annotation" },
97*912701f9SAndroid Build Coastguard Worker        "attributes": { "$ref": "#/$defs/attributes" }
98*912701f9SAndroid Build Coastguard Worker      },
99*912701f9SAndroid Build Coastguard Worker      "required": ["type", "arg"]
100*912701f9SAndroid Build Coastguard Worker    },
101*912701f9SAndroid Build Coastguard Worker    "function-expression": {
102*912701f9SAndroid Build Coastguard Worker      "type": "object",
103*912701f9SAndroid Build Coastguard Worker      "properties": {
104*912701f9SAndroid Build Coastguard Worker        "type": { "const": "expression" },
105*912701f9SAndroid Build Coastguard Worker        "annotation": { "$ref": "#/$defs/function-annotation" },
106*912701f9SAndroid Build Coastguard Worker        "attributes": { "$ref": "#/$defs/attributes" }
107*912701f9SAndroid Build Coastguard Worker      },
108*912701f9SAndroid Build Coastguard Worker      "required": ["type", "annotation"]
109*912701f9SAndroid Build Coastguard Worker    },
110*912701f9SAndroid Build Coastguard Worker    "unsupported-expression": {
111*912701f9SAndroid Build Coastguard Worker      "type": "object",
112*912701f9SAndroid Build Coastguard Worker      "properties": {
113*912701f9SAndroid Build Coastguard Worker        "type": { "const": "expression" },
114*912701f9SAndroid Build Coastguard Worker        "annotation": { "$ref": "#/$defs/unsupported-annotation" },
115*912701f9SAndroid Build Coastguard Worker        "attributes": { "$ref": "#/$defs/attributes" }
116*912701f9SAndroid Build Coastguard Worker      },
117*912701f9SAndroid Build Coastguard Worker      "required": ["type", "annotation"]
118*912701f9SAndroid Build Coastguard Worker    },
119*912701f9SAndroid Build Coastguard Worker    "expression": {
120*912701f9SAndroid Build Coastguard Worker      "oneOf": [
121*912701f9SAndroid Build Coastguard Worker        { "$ref": "#/$defs/literal-expression" },
122*912701f9SAndroid Build Coastguard Worker        { "$ref": "#/$defs/variable-expression" },
123*912701f9SAndroid Build Coastguard Worker        { "$ref": "#/$defs/function-expression" },
124*912701f9SAndroid Build Coastguard Worker        { "$ref": "#/$defs/unsupported-expression" }
125*912701f9SAndroid Build Coastguard Worker      ]
126*912701f9SAndroid Build Coastguard Worker    },
127*912701f9SAndroid Build Coastguard Worker
128*912701f9SAndroid Build Coastguard Worker    "markup": {
129*912701f9SAndroid Build Coastguard Worker      "type": "object",
130*912701f9SAndroid Build Coastguard Worker      "properties": {
131*912701f9SAndroid Build Coastguard Worker        "type": { "const": "markup" },
132*912701f9SAndroid Build Coastguard Worker        "kind": { "oneOf": [ "open", "standalone", "close" ] },
133*912701f9SAndroid Build Coastguard Worker        "name": { "type": "string" },
134*912701f9SAndroid Build Coastguard Worker        "options": { "$ref": "#/$defs/options" },
135*912701f9SAndroid Build Coastguard Worker        "attributes": { "$ref": "#/$defs/attributes" }
136*912701f9SAndroid Build Coastguard Worker      },
137*912701f9SAndroid Build Coastguard Worker      "required": ["type", "kind", "name"]
138*912701f9SAndroid Build Coastguard Worker    },
139*912701f9SAndroid Build Coastguard Worker
140*912701f9SAndroid Build Coastguard Worker    "pattern": {
141*912701f9SAndroid Build Coastguard Worker      "type": "array",
142*912701f9SAndroid Build Coastguard Worker      "items": {
143*912701f9SAndroid Build Coastguard Worker        "oneOf": [
144*912701f9SAndroid Build Coastguard Worker          { "type": "string" },
145*912701f9SAndroid Build Coastguard Worker          { "$ref": "#/$defs/expression" },
146*912701f9SAndroid Build Coastguard Worker          { "$ref": "#/$defs/markup" }
147*912701f9SAndroid Build Coastguard Worker        ]
148*912701f9SAndroid Build Coastguard Worker      }
149*912701f9SAndroid Build Coastguard Worker    },
150*912701f9SAndroid Build Coastguard Worker
151*912701f9SAndroid Build Coastguard Worker    "input-declaration": {
152*912701f9SAndroid Build Coastguard Worker      "type": "object",
153*912701f9SAndroid Build Coastguard Worker      "properties": {
154*912701f9SAndroid Build Coastguard Worker        "type": { "const": "input" },
155*912701f9SAndroid Build Coastguard Worker        "name": { "type": "string" },
156*912701f9SAndroid Build Coastguard Worker        "value": { "$ref": "#/$defs/variable-expression" }
157*912701f9SAndroid Build Coastguard Worker      },
158*912701f9SAndroid Build Coastguard Worker      "required": ["type", "name", "value"]
159*912701f9SAndroid Build Coastguard Worker    },
160*912701f9SAndroid Build Coastguard Worker    "local-declaration": {
161*912701f9SAndroid Build Coastguard Worker      "type": "object",
162*912701f9SAndroid Build Coastguard Worker      "properties": {
163*912701f9SAndroid Build Coastguard Worker        "type": { "const": "local" },
164*912701f9SAndroid Build Coastguard Worker        "name": { "type": "string" },
165*912701f9SAndroid Build Coastguard Worker        "value": { "$ref": "#/$defs/expression" }
166*912701f9SAndroid Build Coastguard Worker      },
167*912701f9SAndroid Build Coastguard Worker      "required": ["type", "name", "value"]
168*912701f9SAndroid Build Coastguard Worker    },
169*912701f9SAndroid Build Coastguard Worker    "unsupported-statement": {
170*912701f9SAndroid Build Coastguard Worker      "type": "object",
171*912701f9SAndroid Build Coastguard Worker      "properties": {
172*912701f9SAndroid Build Coastguard Worker        "type": { "const": "unsupported-statement" },
173*912701f9SAndroid Build Coastguard Worker        "keyword": { "type": "string" },
174*912701f9SAndroid Build Coastguard Worker        "body": { "type": "string" },
175*912701f9SAndroid Build Coastguard Worker        "expressions": {
176*912701f9SAndroid Build Coastguard Worker          "type": "array",
177*912701f9SAndroid Build Coastguard Worker          "items": { "$ref": "#/$defs/expression" }
178*912701f9SAndroid Build Coastguard Worker        }
179*912701f9SAndroid Build Coastguard Worker      },
180*912701f9SAndroid Build Coastguard Worker      "required": ["type", "keyword", "expressions"]
181*912701f9SAndroid Build Coastguard Worker    },
182*912701f9SAndroid Build Coastguard Worker    "declarations": {
183*912701f9SAndroid Build Coastguard Worker      "type": "array",
184*912701f9SAndroid Build Coastguard Worker      "items": {
185*912701f9SAndroid Build Coastguard Worker        "oneOf": [
186*912701f9SAndroid Build Coastguard Worker          { "$ref": "#/$defs/input-declaration" },
187*912701f9SAndroid Build Coastguard Worker          { "$ref": "#/$defs/local-declaration" },
188*912701f9SAndroid Build Coastguard Worker          { "$ref": "#/$defs/unsupported-statement" }
189*912701f9SAndroid Build Coastguard Worker        ]
190*912701f9SAndroid Build Coastguard Worker      }
191*912701f9SAndroid Build Coastguard Worker    },
192*912701f9SAndroid Build Coastguard Worker
193*912701f9SAndroid Build Coastguard Worker    "variant-key": {
194*912701f9SAndroid Build Coastguard Worker      "oneOf": [
195*912701f9SAndroid Build Coastguard Worker        { "$ref": "#/$defs/literal" },
196*912701f9SAndroid Build Coastguard Worker        {
197*912701f9SAndroid Build Coastguard Worker          "type": "object",
198*912701f9SAndroid Build Coastguard Worker          "properties": {
199*912701f9SAndroid Build Coastguard Worker            "type": { "const": "*" },
200*912701f9SAndroid Build Coastguard Worker            "value": { "type": "string" }
201*912701f9SAndroid Build Coastguard Worker          },
202*912701f9SAndroid Build Coastguard Worker          "required": ["type"]
203*912701f9SAndroid Build Coastguard Worker        }
204*912701f9SAndroid Build Coastguard Worker      ]
205*912701f9SAndroid Build Coastguard Worker    },
206*912701f9SAndroid Build Coastguard Worker    "message": {
207*912701f9SAndroid Build Coastguard Worker      "type": "object",
208*912701f9SAndroid Build Coastguard Worker      "properties": {
209*912701f9SAndroid Build Coastguard Worker        "type": { "const": "message" },
210*912701f9SAndroid Build Coastguard Worker        "declarations": { "$ref": "#/$defs/declarations" },
211*912701f9SAndroid Build Coastguard Worker        "pattern": { "$ref": "#/$defs/pattern" }
212*912701f9SAndroid Build Coastguard Worker      },
213*912701f9SAndroid Build Coastguard Worker      "required": ["type", "declarations", "pattern"]
214*912701f9SAndroid Build Coastguard Worker    },
215*912701f9SAndroid Build Coastguard Worker    "select": {
216*912701f9SAndroid Build Coastguard Worker      "type": "object",
217*912701f9SAndroid Build Coastguard Worker      "properties": {
218*912701f9SAndroid Build Coastguard Worker        "type": { "const": "select" },
219*912701f9SAndroid Build Coastguard Worker        "declarations": { "$ref": "#/$defs/declarations" },
220*912701f9SAndroid Build Coastguard Worker        "selectors": {
221*912701f9SAndroid Build Coastguard Worker          "type": "array",
222*912701f9SAndroid Build Coastguard Worker          "items": { "$ref": "#/$defs/expression" }
223*912701f9SAndroid Build Coastguard Worker        },
224*912701f9SAndroid Build Coastguard Worker        "variants": {
225*912701f9SAndroid Build Coastguard Worker          "type": "array",
226*912701f9SAndroid Build Coastguard Worker          "items": {
227*912701f9SAndroid Build Coastguard Worker            "type": "object",
228*912701f9SAndroid Build Coastguard Worker            "properties": {
229*912701f9SAndroid Build Coastguard Worker              "keys": {
230*912701f9SAndroid Build Coastguard Worker                "type": "array",
231*912701f9SAndroid Build Coastguard Worker                "items": { "$ref": "#/$defs/variant-key" }
232*912701f9SAndroid Build Coastguard Worker              },
233*912701f9SAndroid Build Coastguard Worker              "value": { "$ref": "#/$defs/pattern" }
234*912701f9SAndroid Build Coastguard Worker            },
235*912701f9SAndroid Build Coastguard Worker            "required": ["keys", "value"]
236*912701f9SAndroid Build Coastguard Worker          }
237*912701f9SAndroid Build Coastguard Worker        }
238*912701f9SAndroid Build Coastguard Worker      },
239*912701f9SAndroid Build Coastguard Worker      "required": ["type", "declarations", "selectors", "variants"]
240*912701f9SAndroid Build Coastguard Worker    }
241*912701f9SAndroid Build Coastguard Worker  }
242*912701f9SAndroid Build Coastguard Worker}
243