UNPKG

@abaplint/core

Version:
40 lines 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RenameMessageClass = void 0; const vscode_languageserver_types_1 = require("vscode-languageserver-types"); const __1 = require(".."); const renamer_helper_1 = require("./renamer_helper"); class RenameMessageClass { constructor(reg) { this.reg = reg; } buildEdits(obj, oldName, newName) { if (!(obj instanceof __1.MessageClass)) { throw new Error("RenameMessageClass, not a message class"); } let changes = []; const helper = new renamer_helper_1.RenamerHelper(this.reg); changes = changes.concat(helper.buildXMLFileEdits(obj, "ARBGB", oldName, newName)); changes = changes.concat(helper.renameFiles(obj, oldName, newName)); for (const message of obj.getMessages()) { for (const ref of this.reg.getMSAGReferences().listByMessage(obj.getName(), message.getNumber())) { const file = this.reg.getFileByName(ref.filename); if (file === undefined) { continue; } const rows = file.getRawRows(); const i = ref.token.getRow() - 1; const index = rows[i].indexOf(oldName.toLowerCase()); if (index >= 0) { const range = vscode_languageserver_types_1.Range.create(i, index, i, index + oldName.length); changes.push(vscode_languageserver_types_1.TextDocumentEdit.create({ uri: file.getFilename(), version: 1 }, [vscode_languageserver_types_1.TextEdit.replace(range, newName.toLowerCase())])); } } } return { documentChanges: changes, }; } } exports.RenameMessageClass = RenameMessageClass; //# sourceMappingURL=rename_message_class.js.map