@abaplint/transpiler
Version:
42 lines • 1.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.InsertInternalTranspiler = void 0;
const abaplint = require("@abaplint/core");
const chunk_1 = require("../chunk");
class InsertInternalTranspiler {
transpile(node, traversal) {
const options = [];
const source = node.findDirectExpression(abaplint.Expressions.SimpleSource4)
|| node.findDirectExpression(abaplint.Expressions.Source);
const target = node.findDirectExpression(abaplint.Expressions.Target);
const concat = node.concatTokens().toUpperCase();
if (concat.startsWith("INSERT LINES OF ")) {
options.push("lines: true");
}
if (concat.startsWith("INSERT INITIAL LINE ")) {
options.push("initial: true");
}
else {
options.push("data: " + traversal.traverse(source).getCode());
}
const index = node.findExpressionAfterToken("INDEX");
if (index) {
options.push("index: " + traversal.traverse(index).getCode());
}
if (concat.includes(" REFERENCE INTO ")) {
const targets = node.findDirectExpressions(abaplint.Expressions.Target);
options.push("referenceInto: " + traversal.traverse(targets[1]).getCode());
}
const assigning = node.findExpressionAfterToken("ASSIGNING");
if (assigning) {
options.push("assigning: " + traversal.traverse((assigning.findFirstExpression(abaplint.Expressions.FieldSymbol))).getCode());
}
options.push("table: " + traversal.traverse(target).getCode());
return new chunk_1.Chunk()
.append(`abap.statements.insertInternal({`, node, traversal)
.appendString(options.join(", "))
.append(`});`, node.getLastToken(), traversal);
}
}
exports.InsertInternalTranspiler = InsertInternalTranspiler;
//# sourceMappingURL=insert_internal.js.map