UNPKG

@abaplint/core

Version:
52 lines 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MSAGReferences = void 0; class MSAGReferences { constructor() { this.nameNumberIndex = {}; this.filenameIndex = {}; } addUsing(filename, token, messageClass, number) { if (number.length !== 3) { return; } if (this.filenameIndex[filename] === undefined) { this.filenameIndex[filename] = []; } this.filenameIndex[filename].push({ token: token, messageClass: messageClass, number: number, }); if (this.nameNumberIndex[messageClass] === undefined) { this.nameNumberIndex[messageClass] = {}; } if (this.nameNumberIndex[messageClass][number] === undefined) { this.nameNumberIndex[messageClass][number] = []; } this.nameNumberIndex[messageClass][number].push({ filename: filename, token: token, }); } clear(obj) { for (const file of obj.getFiles()) { const filename = file.getFilename(); for (const fIndex of this.filenameIndex[filename] || []) { // this should be okay for performance, each message should be referenced less than 10 times typically this.nameNumberIndex[fIndex.messageClass][fIndex.number] = this.nameNumberIndex[fIndex.messageClass][fIndex.number].filter(i => i.filename !== filename); } delete this.filenameIndex[filename]; } } listByFilename(filename) { return this.filenameIndex[filename] || []; } listByMessage(messageClass, number) { var _a; return ((_a = this.nameNumberIndex[messageClass]) === null || _a === void 0 ? void 0 : _a[number]) || []; } } exports.MSAGReferences = MSAGReferences; //# sourceMappingURL=msag_references.js.map