UNPKG

xliff-generator

Version:

A simple module to create xliff files

45 lines (44 loc) 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const errors_1 = require("../errors"); const string_util_1 = require("../utils/string-util"); class LanguageOptionsValidator { /** * @param languageOptions {Array.<LanguageOption>} * @throws {ValidationError} will be thrown if an error during the validation occured */ validate(languageOptions) { let sourceLanguageKey = ''; let containsSingleSourceLanguageKey = false; const languageKeys = new Set(); for (let i = 0, len = languageOptions.length; i < len; ++i) { const opt = languageOptions[i]; this.validateSingleLanguageOption(opt); const languageKey = opt.languageKey; if (containsSingleSourceLanguageKey === true && opt.isSourceLanguage) { throw new errors_1.ValidationError('The submitted language keys contains multiple source language keys. ' + 'Exactly one source language key is allowed. ' + `The current language key is '${sourceLanguageKey}'.`); } if (opt.isSourceLanguage) { containsSingleSourceLanguageKey = true; sourceLanguageKey = languageKey; } if (languageKeys.has(languageKey)) { throw new errors_1.ValidationError('The submitted language keys contains ' + `the language key '${languageKey}' multiple times.`); } languageKeys.add(languageKey); } if (languageKeys.size <= LanguageOptionsValidator.SizeLanguageKeysMin) { throw new errors_1.ValidationError('The submitted value for language keys contains no language keys.'); } } validateSingleLanguageOption(opt) { if (string_util_1.StringUtil.isOnlyWhiteSpaces(opt.languageKey)) { throw new errors_1.ValidationError('The language key contains only whitespaces'); } } } LanguageOptionsValidator.SizeLanguageKeysMin = 0; exports.LanguageOptionsValidator = LanguageOptionsValidator;