xliff-generator
Version:
A simple module to create xliff files
45 lines (44 loc) • 2.1 kB
JavaScript
;
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;