All files / src/objects message_class.ts

89.55% Statements 60/67
78.95% Branches 15/19
87.5% Functions 7/8
89.55% Lines 60/67

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 671x 1x 1x 1x 22x 22x 22x 22x 23x 23x 22x 22x       22x 22x 1x 1x 1x 1x 1x 22x 22x 21x 21x 21x 22x 22x 8x 8x 8x 8x 22x 22x 3x 3x 2x 2x 3x 1x 1x 22x 22x 22x 22x 8x     8x 8x 8x 8x 8x     8x 8x 8x 2x 2x 6x 6x 6x 6x 22x 22x
import {AbstractObject} from "./_abstract_object";
import {Message} from "../abap/types/message";
import {xmlToArray, unescape} from "../xml_utils";
 
export class MessageClass extends AbstractObject {
  private parsedMessages: Message[] | undefined = undefined;
 
  public getType(): string {
    return "MSAG";
  }
 
  public getDescription(): string | undefined {
    // todo
    return undefined;
  }
 
  public getAllowedNaming() {
    return {
      maxLength: 20,
      allowNamespace: true,
    };
  }
 
  public setDirty(): void {
    this.parsedMessages = undefined;
    super.setDirty();
  }
 
  public getMessages(): readonly Message[] {
    this.parseXML();
    const msg = this.parsedMessages;
    return msg ? msg : [];
  }
 
  public getByNumber(num: string): Message | undefined {
    for (const message of this.getMessages()) {
      if (message.getNumber() === num) {
        return message;
      }
    }
    return undefined;
  }
 
/////////////////////////////////
 
  private parseXML() {
    if (this.parsedMessages !== undefined) {
      return;
    }
 
    this.parsedMessages = [];
 
    const parsed = super.parseRaw2();
    if (parsed === undefined) {
      return;
    }
 
    const t100 = parsed?.abapGit?.["asx:abap"]["asx:values"]?.T100;
    if (t100 === undefined) {
      return;
    }
    for (const msg of xmlToArray(t100.T100)) {
      this.parsedMessages.push(new Message(msg.MSGNR, unescape(msg.TEXT)));
    }
  }
 
}