diff options
Diffstat (limited to 'ext/js/language')
-rw-r--r-- | ext/js/language/dictionary-importer.js | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/ext/js/language/dictionary-importer.js b/ext/js/language/dictionary-importer.js index e893ffb6..9365683b 100644 --- a/ext/js/language/dictionary-importer.js +++ b/ext/js/language/dictionary-importer.js @@ -17,14 +17,13 @@ /* global * JSZip - * JsonSchemaValidator + * JsonSchema * MediaUtil */ class DictionaryImporter { constructor() { this._schemas = new Map(); - this._jsonSchemaValidator = new JsonSchemaValidator(); } async importDictionary(dictionaryDatabase, archiveSource, details, onProgress) { @@ -235,22 +234,27 @@ class DictionaryImporter { return schemaPromise; } - schemaPromise = this._fetchJsonAsset(fileName); + schemaPromise = this._createSchema(fileName); this._schemas.set(fileName, schemaPromise); return schemaPromise; } + async _createSchema(fileName) { + const schema = await this._fetchJsonAsset(fileName); + return new JsonSchema(schema); + } + _validateJsonSchema(value, schema, fileName) { try { - this._jsonSchemaValidator.validate(value, schema); + schema.validate(value); } catch (e) { throw this._formatSchemaError(e, fileName); } } _formatSchemaError(e, fileName) { - const valuePathString = this._getSchemaErrorPathString(e.info.valuePath, 'dictionary'); - const schemaPathString = this._getSchemaErrorPathString(e.info.schemaPath, 'schema'); + const valuePathString = this._getSchemaErrorPathString(e.valuePath, 'dictionary'); + const schemaPathString = this._getSchemaErrorPathString(e.schemaPath, 'schema'); const e2 = new Error(`Dictionary has invalid data in '${fileName}' for value '${valuePathString}', validated against '${schemaPathString}': ${e.message}`); e2.data = e; @@ -260,16 +264,16 @@ class DictionaryImporter { _getSchemaErrorPathString(infoList, base='') { let result = base; - for (const [part] of infoList) { - switch (typeof part) { + for (const {path} of infoList) { + switch (typeof path) { case 'string': if (result.length > 0) { result += '.'; } - result += part; + result += path; break; case 'number': - result += `[${part}]`; + result += `[${path}]`; break; } } |