UNPKG

@abaplint/transpiler

Version:
60 lines 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WriteTranspiler = void 0; const abaplint = require("@abaplint/core"); const chunk_1 = require("../chunk"); class WriteTranspiler { transpile(node, traversal) { const extra = []; let source; const newLine = node.findFirstExpression(abaplint.Expressions.WriteOffsetLength)?.findDirectTokenByText("/") !== undefined; const concat = node.concatTokens().toUpperCase(); const target = node.findDirectExpression(abaplint.Expressions.Target); if (target) { extra.push("target: " + traversal.traverse(target).getCode()); } const exponent = node.findExpressionAfterToken("EXPONENT"); if (exponent) { extra.push("exponent: " + traversal.traverse(exponent).getCode()); } const currency = node.findExpressionAfterToken("CURRENCY"); if (currency) { extra.push("currency: " + traversal.traverse(currency).getCode()); } if (concat.includes("NO-GROUPING")) { extra.push("noGrouping: true"); } if (concat.includes("NO-SIGN")) { extra.push("noSign: true"); } const expr = node.findDirectExpression(abaplint.Expressions.Source); if (expr === undefined) { source = new chunk_1.Chunk().append("''", node, traversal); extra.push("newLine: true"); extra.push("skipLine: true"); } else { if (newLine === true) { extra.push("newLine: true"); } const concat = expr.concatTokens(); if (concat.startsWith("'@KERNEL ")) { // @KERNEL commands must be taken verbatim return new chunk_1.Chunk().append(concat.substr(9, concat.length - 10), node, traversal); } source = traversal.traverse(expr); } const chunk = new chunk_1.Chunk(); chunk.append("abap.statements.write(", node, traversal); chunk.appendChunk(source); if (extra.length === 0) { chunk.append(");", node.getLastToken(), traversal); } else { chunk.append(",{" + extra.join(",") + "});", node.getLastToken(), traversal); } return chunk; } } exports.WriteTranspiler = WriteTranspiler; //# sourceMappingURL=write.js.map