All files / src/objects mime_object.ts

83.33% Statements 65/78
85.71% Branches 12/14
66.66% Functions 6/9
83.33% Lines 65/78

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 791x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 13x 13x 1x 1x 4x 4x 4x 1x 1x 1x 1x 1x 1x 1x     1x 1x 1x 1x 1x 1x 1x 1x 1x                 1x 1x 4x 4x 4x 1x 1x       1x 1x 9x 5x 5x 4x 4x 4x 4x 4x 4x 9x 9x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 1x  
import {IFile} from "../files/_ifile";
import {AbstractObject} from "./_abstract_object";
 
export class MIMEObject extends AbstractObject {
  private parsedXML: {
    URL?: string,
    CLASS?: string,
    FOLDER?: string,
  } | undefined;
 
  public getType(): string {
    return "SMIM";
  }
 
  public getURL(): string | undefined {
    this.parse();
    return this.parsedXML?.URL;
  }
 
  public getClass(): string | undefined {
    this.parse();
    return this.parsedXML?.CLASS;
  }
 
  public isFolder() {
    return this.parsedXML?.FOLDER === "X";
  }
 
  public getAllowedNaming() {
    return {
      maxLength: 32,
      allowNamespace: false,
    };
  }
 
  public getDataFile(): IFile | undefined {
    const main = this.getXMLFile();
    for (const f of this.getFiles()) {
      if (f.getFilename() !== main?.getFilename()) {
        return f;
      }
    }
    return undefined;
  }
 
  public setDirty(): void {
    this.parsedXML = undefined;
    super.setDirty();
  }
 
  public getDescription(): string | undefined {
// this object type does not have a description
    return undefined;
  }
 
  public parse() {
    if (this.parsedXML) {
      return {updated: false, runtime: 0};
    }
 
    const start = Date.now();
    this.parsedXML = {};
    const parsed = super.parseRaw2();
 
    if (parsed === undefined
        || parsed.abapGit === undefined
        || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
      return {updated: false, runtime: 0};
    }
 
    this.parsedXML.URL = parsed.abapGit["asx:abap"]["asx:values"].URL;
    this.parsedXML.CLASS = parsed.abapGit["asx:abap"]["asx:values"].CLASS;
    this.parsedXML.FOLDER = parsed.abapGit["asx:abap"]["asx:values"].FOLDER;
 
    const end = Date.now();
    return {updated: true, runtime: end - start};
  }
}