UNPKG

@abaplint/core

Version:
71 lines 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MacroReferences = void 0; class MacroReferences { constructor() { this.definitions = {}; this.references = {}; } addDefinition(ref, start, end) { if (this.definitions[ref.filename] === undefined) { this.definitions[ref.filename] = []; } else if (this.definitions[ref.filename].find((d) => d.token.getStart().equals(ref.token.getStart()))) { return; } this.definitions[ref.filename].push({ token: ref.token, start, end }); } getDefinitionRange(filename, token) { for (const d of this.definitions[filename] || []) { if (d.token.getStart().equals(token.getStart())) { return { start: d.start, end: d.end }; } } return undefined; } addReference(ref) { if (this.references[ref.filename] === undefined) { this.references[ref.filename] = []; } this.references[ref.filename].push(ref); } listDefinitionsByFile(filename) { const ret = []; for (const d of this.definitions[filename] || []) { ret.push(d.token); } return ret; } listUsagesbyMacro(filename, token) { const ret = []; const tokenStr = token.getStr().toUpperCase(); for (const ref of this.references[filename] || []) { if (ref.token.getStr().toUpperCase() === tokenStr) { ret.push(ref); } } return ret; } clear(filename) { delete this.definitions[filename]; delete this.references[filename]; } findDefinitionByUsage(filename, token) { const tokenStr = token.getStr().toUpperCase(); for (const ref of this.references[filename] || []) { if (ref.token.getStart().equals(token.getStart())) { for (const d of this.definitions[ref.filename] || []) { if (d.token.getStr().toUpperCase() === tokenStr) { return { filename: ref.filename, token: d.token, }; } } } } return undefined; } } exports.MacroReferences = MacroReferences; //# sourceMappingURL=macro_references.js.map