UNPKG

@abaplint/transpiler

Version:
43 lines 1.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ShiftTranspiler = void 0; const abaplint = require("@abaplint/core"); const chunk_1 = require("../chunk"); class ShiftTranspiler { transpile(node, traversal) { const target = traversal.traverse(node.findDirectExpression(abaplint.Expressions.Target)).getCode(); const options = []; if (node.findDirectTokenByText("LEFT")) { options.push("direction: 'LEFT'"); } else if (node.findDirectTokenByText("RIGHT")) { options.push("direction: 'RIGHT'"); } if (node.findDirectTokenByText("CIRCULAR")) { options.push("circular: true"); } const leading = node.findExpressionAfterToken("LEADING"); if (leading) { options.push("deletingLeading: " + traversal.traverse(leading).getCode()); } const trailing = node.findExpressionAfterToken("TRAILING"); if (trailing) { options.push("deletingTrailing: " + traversal.traverse(trailing).getCode()); } const places = node.findExpressionAfterToken("BY"); if (places) { options.push("places: " + traversal.traverse(places).getCode()); } const to = node.findExpressionAfterToken("TO"); if (to) { options.push("to: " + traversal.traverse(to).getCode()); } if (node.findDirectTokenByText("BYTE")) { options.push("mode: 'BYTE'"); } const extra = options.length > 0 ? ", {" + options.join(",") + "}" : ""; return new chunk_1.Chunk().append("abap.statements.shift(" + target + extra + ");", node, traversal); } } exports.ShiftTranspiler = ShiftTranspiler; //# sourceMappingURL=shift.js.map