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