@abaplint/transpiler
Version:
45 lines • 1.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModifyInternalTranspiler = void 0;
const abaplint = require("@abaplint/core");
const expressions_1 = require("../expressions");
const chunk_1 = require("../chunk");
class ModifyInternalTranspiler {
transpile(node, traversal) {
const target = traversal.traverse(node.findDirectExpression(abaplint.Expressions.Target)).getCode();
const extra = [];
const index = node.findExpressionAfterToken("INDEX");
if (index) {
const s = new expressions_1.SourceTranspiler().transpile(index, traversal).getCode();
extra.push("index: " + s);
}
const from = node.findExpressionAfterToken("FROM");
if (from) {
const s = new expressions_1.SourceTranspiler().transpile(from, traversal).getCode();
extra.push("from: " + s);
}
const whereNode = node.findDirectExpression(abaplint.Expressions.ComponentCond);
if (whereNode) {
// todo, replacing "await" is a hack
extra.push("where: " + traversal.traverse(whereNode).getCode().replace("await ", ""));
}
const transporting = node.findDirectExpressions(abaplint.Expressions.ComponentChainSimple);
if (transporting.length > 0) {
const list = [];
for (const t of transporting) {
list.push("\"" + t.concatTokens().toLowerCase() + "\"");
}
extra.push("transporting: [" + list.join(",") + "]");
}
let concat = "";
if (extra.length > 0) {
concat = ",{" + extra.join(",") + "}";
}
return new chunk_1.Chunk()
.append("abap.statements.modifyInternal(", node, traversal)
.appendString(target + concat)
.append(");", node.getLastToken(), traversal);
}
}
exports.ModifyInternalTranspiler = ModifyInternalTranspiler;
//# sourceMappingURL=modify_internal.js.map