| // Copyright (C) 2018 and later: Unicode, Inc. and others. |
| // License & terms of use: http://www.unicode.org/copyright.html |
| |
| { |
| "$id": "http://unicode.org/icu-filter-schema", |
| "$schema": "http://json-schema.org/draft-04/schema#", |
| "description": "JSON Schema for an ICU data filter file", |
| "type": "object", |
| "properties": { |
| "strategy": { |
| "type": "string", |
| "enum": ["additive", "subtractive"] |
| }, |
| "localeFilter": { "$ref": "#/definitions/filter" }, |
| "featureFilters": { |
| "type": "object", |
| "additionalProperties": { |
| "oneOf": [ |
| { "$ref": "#/definitions/filter" }, |
| { |
| "type": "string", |
| "enum": ["include", "exclude"] |
| } |
| ] |
| } |
| }, |
| "resourceFilters": { |
| "type": "array", |
| "items": { |
| "type": "object", |
| "properties": { |
| "categories": { |
| "type": "array", |
| "items": { "type": "string" } |
| }, |
| "files": { "$ref": "#/definitions/filter" }, |
| "rules": { |
| "type": "array", |
| "items": { |
| "type": "string", |
| "pattern": "^[+-]/[\\S]*$" |
| } |
| } |
| }, |
| "required": ["categories", "rules"], |
| "additionalProperties": false |
| } |
| }, |
| "fileReplacements": { |
| "type": "object", |
| "properties": { |
| "directory": { |
| "type": "string", |
| "pattern": "^(\\$SRC|\\$FILTERS|\\$CWD|/$|/[^/]+)(/[^/]+)*$" |
| }, |
| "replacements": { |
| "type": "array", |
| "items": { |
| "oneOf": [ |
| { "type": "string" }, |
| { |
| "type": "object", |
| "properties": { |
| "src": { "type": "string" }, |
| "dest": { "type": "string" } |
| }, |
| "additionalProperties": false, |
| "required": ["src", "dest"] |
| } |
| ] |
| } |
| } |
| }, |
| "additionalProperties": false, |
| "required": ["directory", "replacements"] |
| }, |
| "collationUCAData": { |
| "type": "string", |
| "enum": ["unihan", "implicithan"] |
| }, |
| "usePoolBundle": { |
| "type": "boolean" |
| } |
| }, |
| "additionalProperties": false, |
| "definitions": { |
| "filter": { |
| "type": "object", |
| "oneOf": [ |
| { |
| "properties": { |
| "filterType": { |
| "$ref": "#/definitions/includeExcludeFilterTypes" |
| }, |
| "whitelist": { "$ref": "#/definitions/stringList" } |
| }, |
| "required": ["whitelist"], |
| "additionalProperties": false |
| }, |
| { |
| "properties": { |
| "filterType": { |
| "$ref": "#/definitions/includeExcludeFilterTypes" |
| }, |
| "blacklist": { "$ref": "#/definitions/stringList" } |
| }, |
| "required": ["blacklist"], |
| "additionalProperties": false |
| }, |
| { |
| "properties": { |
| "filterType": { |
| "$ref": "#/definitions/includeExcludeFilterTypes" |
| }, |
| "includelist": { "$ref": "#/definitions/stringList" } |
| }, |
| "required": ["includelist"], |
| "additionalProperties": false |
| }, |
| { |
| "properties": { |
| "filterType": { |
| "$ref": "#/definitions/includeExcludeFilterTypes" |
| }, |
| "excludelist": { "$ref": "#/definitions/stringList" } |
| }, |
| "required": ["excludelist"], |
| "additionalProperties": false |
| }, |
| { |
| "properties": { |
| "filterType": { |
| "type": "string", |
| "enum": ["exclude"] |
| } |
| }, |
| "required": ["filterType"], |
| "additionalProperties": false |
| }, |
| { |
| "properties": { |
| "filterType": { |
| "type": "string", |
| "enum": ["locale"] |
| }, |
| "includeChildren": { |
| "type": "boolean" |
| }, |
| "includeScripts": { |
| "type": "boolean" |
| }, |
| "whitelist": { "$ref": "#/definitions/stringList" } |
| }, |
| "required": ["filterType", "whitelist"], |
| "additionalProperties": false |
| }, |
| { |
| "properties": { |
| "filterType": { |
| "type": "string", |
| "enum": ["locale"] |
| }, |
| "includeChildren": { |
| "type": "boolean" |
| }, |
| "includeScripts": { |
| "type": "boolean" |
| }, |
| "includelist": { "$ref": "#/definitions/stringList" } |
| }, |
| "required": ["filterType", "includelist"], |
| "additionalProperties": false |
| }, |
| { |
| "properties": { |
| "filterType": { |
| "type": "string", |
| "enum": ["union"] |
| }, |
| "unionOf": { |
| "type": "array", |
| "items": { "$ref": "#/definitions/filter" } |
| } |
| }, |
| "required": ["filterType", "unionOf"], |
| "additionalProperties": false |
| } |
| ] |
| }, |
| "includeExcludeFilterTypes": { |
| "type": "string", |
| "enum": [ |
| "language", |
| "regex" |
| ] |
| }, |
| "stringList": { |
| "type": "array", |
| "items": { |
| "type": "string" |
| }, |
| "minItems": 1, |
| "uniqueItems": true |
| } |
| } |
| } |