Skip to content
Snippets Groups Projects
importedModuleVersion.ts 1.65 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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]) {
    
        if (ImportedModuleVersion.version[0] > versionString[0]) {
          return true;
        }
    
        if (ImportedModuleVersion.version[1] < versionString[1]) {
    
        if (ImportedModuleVersion.version[1] > versionString[1]) {
          return true;
        }
    
        if (ImportedModuleVersion.version[2] < versionString[2]) {