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