@abaplint/transpiler
Version:
33 lines • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConcatenateTranspiler = void 0;
const abaplint = require("@abaplint/core");
const chunk_1 = require("../chunk");
class ConcatenateTranspiler {
transpile(node, traversal) {
const concat = node.concatTokens().toUpperCase();
const slist = [];
for (const s of node.findDirectExpressions(abaplint.Expressions.Source).concat(node.findDirectExpressions(abaplint.Expressions.SimpleSource3))) {
slist.push(traversal.traverse(s));
}
let extra = "";
if (node.findExpressionAfterToken("BY")) {
extra = `, separatedBy: ${slist.pop()?.getCode()}`;
}
if (concat.startsWith("CONCATENATE LINES OF ")) {
extra += ", lines: true";
}
if (concat.includes(" RESPECTING BLANKS")) {
extra += ", respectingBlanks: true";
}
const target = traversal.traverse(node.findDirectExpression(abaplint.Expressions.Target));
return new chunk_1.Chunk()
.append("abap.statements.concatenate({source: [", node, traversal)
.join(slist)
.appendString("], target: ")
.appendChunk(target)
.append(extra + "});", node.getLastToken(), traversal);
}
}
exports.ConcatenateTranspiler = ConcatenateTranspiler;
//# sourceMappingURL=concatenate.js.map