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; } return true; } }