@abaplint/transpiler
Version:
43 lines • 1.79 kB
JavaScript
;
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