Newer
Older
export class ImportedModuleVersion {
static unitLoaded: boolean;
static version: string | null = null; // null for invalid
static setVersion(importedModuleVersion: string | undefined): void {
ImportedModuleVersion.unitLoaded = false;
if (importedModuleVersion) {
ImportedModuleVersion.verifyVersionString(importedModuleVersion) ?
ImportedModuleVersion.version = importedModuleVersion.split('@')[1] :
ImportedModuleVersion.version = null;
}
/*
Checks for existence of parts before and after the @ sign. The first part has to be
'iqb-aspect-definition', which indicates a known and supported version.
The second part has to have exactly 3 numbers, split at the . (dot) sign.
*/
static verifyVersionString(versionString: string): boolean {
if (versionString.split('@').length !== 2 ||
versionString.split('@')[0] !== 'iqb-aspect-definition' ||
versionString.split('@')[1].split('.').length !== 3) {
console.error('Error reading the unit definition!');
return false;
}
return true;
static isGreaterThanOrEqualTo(versionString: string): boolean {
if (!ImportedModuleVersion.version) {
return false;
}
if (ImportedModuleVersion.version[0] < versionString[0]) {
return false;
}
if (ImportedModuleVersion.version[0] > versionString[0]) {
return true;
}
if (ImportedModuleVersion.version[1] < versionString[1]) {
return false;
}
if (ImportedModuleVersion.version[1] > versionString[1]) {
return true;
}
if (ImportedModuleVersion.version[2] < versionString[2]) {
return false;
}