@abaplint/core
Version:
abaplint - Core API
52 lines • 1.94 kB
JavaScript
;
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