UNPKG

@abaplint/transpiler

Version:
40 lines 1.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MethodCallBodyTranspiler = void 0; const abaplint = require("@abaplint/core"); const core_1 = require("@abaplint/core"); const chunk_1 = require("../chunk"); const method_call_param_1 = require("./method_call_param"); class MethodCallBodyTranspiler { constructor(m) { this.m = m; } transpile(node, traversal) { const ret = new chunk_1.Chunk(); let pt = false; for (const c of node.getChildren()) { if (c instanceof core_1.Nodes.TokenNode) { if (c.concatTokens().toUpperCase() === "PARAMETER") { // PARAMETER-TABLE pt = true; } else if (c.concatTokens().toUpperCase() === "EXCEPTION") { // todo: handle EXCEPTION-TABLE, for now just produce valid javascript return ret; } } else if (c.get() instanceof abaplint.Expressions.MethodCallParam) { ret.appendChunk(new method_call_param_1.MethodCallParamTranspiler(this.m).transpile(c, traversal)); } else { ret.appendChunk(traversal.traverse(c)); if (pt === true) { ret.appendString(".array().reduce((a, v) => ({ ...a, [v.get().name.get().toLowerCase().trimEnd()]: v.get().value.dereference()}), {})"); } } } return ret; } } exports.MethodCallBodyTranspiler = MethodCallBodyTranspiler; //# sourceMappingURL=method_call_body.js.map