All files / src/objects extension_index.ts

87.5% Statements 49/56
68.75% Branches 22/32
85.71% Functions 6/7
87.5% Lines 49/56

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 571x 1x 2x 2x 2x 2x 2x 2x 2x 4x 4x 2x 2x           2x 2x 1x 1x 1x 2x 2x 1x 1x 1x 2x 2x 1x 1x 1x 2x 2x 3x 2x 2x 1x 1x 1x 1x 3x     1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 2x  
import {AbstractObject} from "./_abstract_object";
 
export class ExtensionIndex extends AbstractObject {
  private parsedXML: {
    sqltab?: string,
    ddtext?: string,
  } | undefined = undefined;
 
  public getType(): string {
    return "XINX";
  }
 
  public getAllowedNaming() {
    return { // todo, verify
      maxLength: 33,
      allowNamespace: true,
    };
  }
 
  public setDirty(): void {
    this.parsedXML = undefined;
    super.setDirty();
  }
 
  public getDescription(): string | undefined {
    this.parse();
    return this.parsedXML?.ddtext;
  }
 
  public getTableName(): string | undefined {
    this.parse();
    return this.parsedXML?.sqltab;
  }
 
  public parse() {
    if (this.parsedXML !== undefined) {
      return {updated: false, runtime: 0};
    }
 
    const start = Date.now();
    this.parsedXML = {};
    const parsed = super.parseRaw2();
    if (parsed === undefined) {
      return {updated: false, runtime: 0};
    }
 
    const xinx = parsed.abapGit?.["asx:abap"]?.["asx:values"]?.XINX;
    this.parsedXML = {
      sqltab: xinx?.DD12V?.SQLTAB,
      ddtext: xinx?.DD12V?.DDTEXT,
    };
 
    const end = Date.now();
    return {updated: true, runtime: end - start};
  }
}