All files / src/abap abap_file.ts

100% Statements 63/63
100% Branches 11/11
100% Functions 7/7
100% Lines 63/63

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 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 7444x 7444x 7444x 7444x 7444x 7444x 7444x 7444x 7444x 7444x 7444x 7444x 1x 1x 453x 453x 1x 1x 7559x 7559x 1x 1x 2656x 2656x 1x 1x 24076x 24076x 1x 1x 3918x 1537x 3918x 2381x 2381x 30597x 30586x 30586x 2381x 2381x 2381x 3918x 1x 1x 22694x 22694x 1x 1x
import {Pragma} from "./1_lexer/tokens";
import {AbstractToken} from "./1_lexer/tokens/abstract_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 AbstractToken[];
  private readonly statements: readonly StatementNode[];
  private readonly structure: StructureNode | undefined;
  private readonly file: IFile;
  private readonly info: IABAPFileInformation;
 
  public constructor(file: IFile,
                     tokens: readonly AbstractToken[],
                     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 AbstractToken[] {
    if (withPragmas === true) {
      return this.tokens;
    } else {
      const tokens: AbstractToken[] = [];
      this.tokens.forEach((t) => {
        if (!(t instanceof Pragma)) {
          tokens.push(t);
        }
      });
      return tokens;
    }
  }
 
  public getStatements(): readonly StatementNode[] {
    return this.statements;
  }
 
}