All files / src/abap abap_file.ts

100% Statements 21/21
100% Branches 5/5
100% Functions 8/8
100% Lines 21/21

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 631x   1x         1x                         5036x 5036x 5036x 5036x 5036x 5036x       168x       3746x       1532x       10493x       2868x 656x   2212x 2212x 27520x 27513x     2212x         9105x      
import {Pragma} from "./1_lexer/tokens";
import {Token} from "./1_lexer/tokens/_token";
import {AbstractFile} from "../files/_abstract_file";
import {IFile} from "../files/_ifile";
import {StructureNode, StatementNode} from "./nodes";
import {IABAPFileInformation} from "./4_file_information/_abap_file_information";
 
export class ABAPFile extends AbstractFile {
  private readonly tokens: readonly Token[];
  private readonly statements: readonly StatementNode[];
  private readonly structure: StructureNode | undefined;
  private readonly file: IFile;
  private readonly info: IABAPFileInformation;
 
  public constructor(file: IFile,
                     tokens: readonly Token[],
                     statements: readonly StatementNode[],
                     structure: StructureNode | undefined,
                     info: IABAPFileInformation) {
 
    super(file.getFilename());
    this.file = file;
    this.tokens = tokens;
    this.statements = statements;
    this.structure = structure;
    this.info = info;
  }
 
  public getRaw(): string {
    return this.file.getRaw();
  }
 
  public getInfo(): IABAPFileInformation {
    return this.info;
  }
 
  public getRawRows(): string[] {
    return this.file.getRawRows();
  }
 
  public getStructure(): StructureNode | undefined {
    return this.structure;
  }
 
  public getTokens(withPragmas = true): readonly Token[] {
    if (withPragmas === true) {
      return this.tokens;
    } else {
      const tokens: Token[] = [];
      this.tokens.forEach((t) => {
        if (!(t instanceof Pragma)) {
          tokens.push(t);
        }
      });
      return tokens;
    }
  }
 
  public getStatements(): readonly StatementNode[] {
    return this.statements;
  }
 
}