From 277e13f22fe892bf4203696248f8304c20dca957 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Wed, 27 Nov 2019 12:11:45 -0500 Subject: [PATCH] Add schema file for options --- ext/bg/data/options-schema.json | 533 ++++++++++++++++++++++++++++++++ 1 file changed, 533 insertions(+) create mode 100644 ext/bg/data/options-schema.json diff --git a/ext/bg/data/options-schema.json b/ext/bg/data/options-schema.json new file mode 100644 index 00000000..c086052b --- /dev/null +++ b/ext/bg/data/options-schema.json @@ -0,0 +1,533 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "required": [ + "version", + "profiles", + "profileCurrent", + "global" + ], + "properties": { + "version": { + "type": "integer", + "minimum": 0, + "default": 0 + }, + "profiles": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "conditionGroups", + "options" + ], + "properties": { + "name": { + "type": "string", + "default": "Default" + }, + "conditionGroups": { + "type": "array", + "items": { + "type": "object", + "required": [ + "conditions" + ], + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "type", + "operator", + "value" + ], + "properties": { + "type": { + "type": "string" + }, + "operator": { + "type": "string" + }, + "value": {} + } + } + } + } + } + }, + "options": { + "type": "object", + "required": [ + "version", + "general", + "audio", + "scanning", + "dictionaries", + "parsing", + "anki" + ], + "properties": { + "version": { + "type": "integer", + "minimum": 0 + }, + "general": { + "type": "object", + "required": [ + "enable", + "resultOutputMode", + "debugInfo", + "maxResults", + "showAdvanced", + "popupDisplayMode", + "popupWidth", + "popupHeight", + "popupHorizontalOffset", + "popupVerticalOffset", + "popupHorizontalOffset2", + "popupVerticalOffset2", + "popupHorizontalTextPosition", + "popupVerticalTextPosition", + "showGuide", + "compactTags", + "compactGlossaries", + "mainDictionary", + "popupTheme", + "popupOuterTheme", + "customPopupCss", + "customPopupOuterCss", + "enableWanakana", + "enableClipboardMonitor" + ], + "properties": { + "enable": { + "type": "boolean", + "default": true + }, + "resultOutputMode": { + "type": "string", + "enum": ["group", "merge", "split"], + "default": "group" + }, + "debugInfo": { + "type": "boolean", + "default": false + }, + "maxResults": { + "type": "integer", + "minimum": 1, + "default": 32 + }, + "showAdvanced": { + "type": "boolean", + "default": false + }, + "popupDisplayMode": { + "type": "string", + "enum": ["default", "full-width"], + "default": "default" + }, + "popupWidth": { + "type": "number", + "minimum": 0, + "default": 400 + }, + "popupHeight": { + "type": "number", + "minimum": 0, + "default": 250 + }, + "popupHorizontalOffset": { + "type": "number", + "default": 0 + }, + "popupVerticalOffset": { + "type": "number", + "default": 10 + }, + "popupHorizontalOffset2": { + "type": "number", + "default": 10 + }, + "popupVerticalOffset2": { + "type": "number", + "default": 0 + }, + "popupHorizontalTextPosition": { + "type": "string", + "enum": ["below", "above"], + "default": "below" + }, + "popupVerticalTextPosition": { + "type": "string", + "enum": ["default", "before", "after", "left", "right"], + "default": "before" + }, + "showGuide": { + "type": "boolean", + "default": true + }, + "compactTags": { + "type": "boolean", + "default": false + }, + "compactGlossaries": { + "type": "boolean", + "default": false + }, + "mainDictionary": { + "type": "string" + }, + "popupTheme": { + "type": "string", + "enum": ["default", "dark"], + "default": "default" + }, + "popupOuterTheme": { + "type": "string", + "enum": ["default", "dark", "auto"], + "default": "default" + }, + "customPopupCss": { + "type": "string", + "default": "" + }, + "customPopupOuterCss": { + "type": "string", + "default": "" + }, + "enableWanakana": { + "type": "boolean", + "default": true + }, + "enableClipboardMonitor": { + "type": "boolean", + "default": false + } + } + }, + "audio": { + "type": "object", + "required": [ + "enabled", + "sources", + "volume", + "autoPlay", + "customSourceUrl", + "textToSpeechVoice" + ], + "properties": { + "enabled": { + "type": "boolean", + "default": true + }, + "sources": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "jpod101", + "jpod101-alternate", + "jisho", + "text-to-speech", + "text-to-speech-reading", + "custom" + ], + "default": "jpod101" + } + }, + "volume": { + "type": "number", + "minimum": 0, + "maximum": 100, + "default": 100 + }, + "autoPlay": { + "type": "boolean", + "default": false + }, + "customSourceUrl": { + "type": "string", + "default": "" + }, + "textToSpeechVoice": { + "type": "string", + "default": "" + } + } + }, + "scanning": { + "type": "object", + "required": [ + "middleMouse", + "touchInputEnabled", + "selectText", + "alphanumeric", + "autoHideResults", + "delay", + "length", + "modifier", + "deepDomScan", + "popupNestingMaxDepth", + "enablePopupSearch", + "enableOnPopupExpressions", + "enableOnSearchPage" + ], + "properties": { + "middleMouse": { + "type": "boolean", + "default": true + }, + "touchInputEnabled": { + "type": "boolean", + "default": true + }, + "selectText": { + "type": "boolean", + "default": true + }, + "alphanumeric": { + "type": "boolean", + "default": true + }, + "autoHideResults": { + "type": "boolean", + "default": false + }, + "delay": { + "type": "number", + "minimum": 0, + "default": 20 + }, + "length": { + "type": "integer", + "minimum": 1, + "default": 10 + }, + "modifier": { + "type": "string", + "enum": ["none", "alt", "ctrl", "shift"], + "default": "shift" + }, + "deepDomScan": { + "type": "boolean", + "default": false + }, + "popupNestingMaxDepth": { + "type": "integer", + "minimum": 0, + "default": 0 + }, + "enablePopupSearch": { + "type": "boolean", + "default": false + }, + "enableOnPopupExpressions": { + "type": "boolean", + "default": false + }, + "enableOnSearchPage": { + "type": "boolean", + "default": true + } + } + }, + "dictionaries": { + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "priority", + "enabled", + "allowSecondarySearches" + ], + "properties": { + "priority": { + "type": "number", + "default": 0 + }, + "enabled": { + "type": "boolean", + "default": true + }, + "allowSecondarySearches": { + "type": "boolean", + "default": false + } + } + } + }, + "parsing": { + "type": "object", + "required": [ + "enableScanningParser", + "enableMecabParser", + "selectedParser", + "readingMode" + ], + "properties": { + "enableScanningParser": { + "type": "boolean", + "default": true + }, + "enableMecabParser": { + "type": "boolean", + "default": false + }, + "selectedParser": { + "type": ["string", "null"], + "default": null + }, + "readingMode": { + "type": "string", + "enum": ["hiragana", "katakana", "romaji"], + "default": "hiragana" + } + } + }, + "anki": { + "type": "object", + "required": [ + "enable", + "server", + "tags", + "sentenceExt", + "screenshot", + "terms", + "kanji", + "fieldTemplates" + ], + "properties": { + "enable": { + "type": "boolean", + "default": false + }, + "server": { + "type": "string", + "default": "http://127.0.0.1:8765" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "yomichan" + ] + }, + "sentenceExt": { + "type": "integer", + "minimum": 0, + "default": 200 + }, + "screenshot": { + "type": "object", + "required": [ + "format", + "quality" + ], + "properties": { + "format": { + "type": "string", + "enum": ["png", "jpeg"], + "default": "png" + }, + "quality": { + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 92 + } + } + }, + "terms": { + "type": "object", + "required": [ + "deck", + "model", + "fields" + ], + "properties": { + "deck": { + "type": "string", + "default": "" + }, + "model": { + "type": "string", + "default": "" + }, + "fields": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + } + } + }, + "kanji": { + "type": "object", + "required": [ + "deck", + "model", + "fields" + ], + "properties": { + "deck": { + "type": "string", + "default": "" + }, + "model": { + "type": "string", + "default": "" + }, + "fields": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + } + } + }, + "fieldTemplates": { + "type": ["string", "null"], + "default": null + } + } + } + } + } + } + } + }, + "profileCurrent": { + "type": "integer", + "minimum": 0, + "default": 0 + }, + "global": { + "type": "object", + "required": [ + "database" + ], + "properties": { + "database": { + "type": "object", + "required": [ + "prefixWildcardsSupported" + ], + "properties": { + "prefixWildcardsSupported": { + "type": "boolean", + "default": false + } + } + } + } + } + } +}