]> git.saurik.com Git - apple/icu.git/blame - icuSources/python/icutools/databuilder/filtration_schema.json
ICU-66108.tar.gz
[apple/icu.git] / icuSources / python / icutools / databuilder / filtration_schema.json
CommitLineData
3d1f044b
A
1// Copyright (C) 2018 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3
4{
5 "$id": "http://unicode.org/icu-filter-schema",
6 "$schema": "http://json-schema.org/draft-04/schema#",
7 "description": "JSON Schema for an ICU data filter file",
8 "type": "object",
9 "properties": {
340931cb
A
10 "strategy": {
11 "type": "string",
12 "enum": ["additive", "subtractive"]
13 },
3d1f044b
A
14 "localeFilter": { "$ref": "#/definitions/filter" },
15 "featureFilters": {
16 "type": "object",
340931cb
A
17 "additionalProperties": {
18 "oneOf": [
19 { "$ref": "#/definitions/filter" },
20 {
21 "type": "string",
22 "enum": ["include", "exclude"]
23 }
24 ]
25 }
3d1f044b
A
26 },
27 "resourceFilters": {
28 "type": "array",
29 "items": {
30 "type": "object",
31 "properties": {
32 "categories": {
33 "type": "array",
34 "items": { "type": "string" }
35 },
36 "files": { "$ref": "#/definitions/filter" },
37 "rules": {
38 "type": "array",
39 "items": {
40 "type": "string",
340931cb 41 "pattern": "^[+-]/[\\S]*$"
3d1f044b
A
42 }
43 }
44 },
45 "required": ["categories", "rules"],
46 "additionalProperties": false
47 }
48 },
49 "fileReplacements": {
50 "type": "object",
51 "properties": {
340931cb
A
52 "directory": {
53 "type": "string",
54 "pattern": "^(\\$SRC|\\$FILTERS|\\$CWD|/$|/[^/]+)(/[^/]+)*$"
55 },
3d1f044b
A
56 "replacements": {
57 "type": "array",
58 "items": {
340931cb
A
59 "oneOf": [
60 { "type": "string" },
61 {
62 "type": "object",
63 "properties": {
64 "src": { "type": "string" },
65 "dest": { "type": "string" }
66 },
67 "additionalProperties": false,
68 "required": ["src", "dest"]
69 }
70 ]
3d1f044b
A
71 }
72 }
73 },
74 "additionalProperties": false,
75 "required": ["directory", "replacements"]
76 },
77 "collationUCAData": {
78 "type": "string",
79 "enum": ["unihan", "implicithan"]
340931cb
A
80 },
81 "usePoolBundle": {
82 "type": "boolean"
3d1f044b
A
83 }
84 },
85 "additionalProperties": false,
86 "definitions": {
87 "filter": {
88 "type": "object",
89 "oneOf": [
90 {
91 "properties": {
92 "filterType": {
93 "$ref": "#/definitions/blacklistWhitelistFilterTypes"
94 },
95 "whitelist": { "$ref": "#/definitions/stringList" }
96 },
97 "required": ["whitelist"],
98 "additionalProperties": false
99 },
100 {
101 "properties": {
102 "filterType": {
103 "$ref": "#/definitions/blacklistWhitelistFilterTypes"
104 },
105 "blacklist": { "$ref": "#/definitions/stringList" }
106 },
107 "required": ["blacklist"],
108 "additionalProperties": false
109 },
110 {
111 "properties": {
112 "filterType": {
113 "type": "string",
114 "enum": ["exclude"]
115 }
116 },
117 "required": ["filterType"],
118 "additionalProperties": false
119 },
120 {
121 "properties": {
122 "filterType": {
123 "type": "string",
124 "enum": ["locale"]
125 },
126 "includeChildren": {
127 "type": "boolean"
128 },
129 "includeScripts": {
130 "type": "boolean"
131 },
132 "whitelist": { "$ref": "#/definitions/stringList" }
133 },
134 "required": ["filterType", "whitelist"],
135 "additionalProperties": false
136 },
137 {
138 "properties": {
139 "filterType": {
140 "type": "string",
141 "enum": ["union"]
142 },
143 "unionOf": {
144 "type": "array",
145 "items": { "$ref": "#/definitions/filter" }
146 }
147 },
148 "required": ["filterType", "unionOf"],
149 "additionalProperties": false
150 }
151 ]
152 },
153 "blacklistWhitelistFilterTypes": {
154 "type": "string",
155 "enum": [
156 "language",
157 "regex"
158 ]
159 },
160 "stringList": {
161 "type": "array",
162 "items": {
163 "type": "string"
164 },
165 "minItems": 1,
166 "uniqueItems": true
167 }
168 }
169}