UNPKG

@abaplint/transpiler

Version:
37 lines 2.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CallTransformationTranspiler = void 0; const abaplint = require("@abaplint/core"); const chunk_1 = require("../chunk"); class CallTransformationTranspiler { transpile(node, traversal) { const lookup = traversal.lookupClassOrInterface("KERNEL_CALL_TRANSFORMATION", node.getFirstToken()); const options = []; const name = node.findDirectExpression(abaplint.Expressions.NamespaceSimpleName)?.concatTokens(); options.push("name: \"" + name + "\""); const sourceXML = node.findDirectExpression(abaplint.Expressions.SimpleSource3); if (sourceXML) { options.push("sourceXML: " + traversal.traverse(sourceXML).getCode()); } const resultXML = node.findDirectExpression(abaplint.Expressions.Target); if (resultXML) { options.push("resultXML: " + traversal.traverse(resultXML).getCode()); } const callOptions = node.findExpressionAfterToken("OPTIONS"); if (callOptions) { options.push("options: " + traversal.traverse(callOptions).getCode()); } const result = node.findExpressionAfterToken("RESULT"); if (result && result.get() instanceof abaplint.Expressions.CallTransformationParameters) { options.push("result: " + traversal.traverse(result).getCode()); } const source = node.findExpressionAfterToken("SOURCE"); if (source && source.get() instanceof abaplint.Expressions.CallTransformationParameters) { options.push("source: " + traversal.traverse(source).getCode()); } const call = `await ${lookup}.call({${options.join(",")}});`; return new chunk_1.Chunk().append(`if (${lookup} === undefined) throw new Error("CallTransformation, kernel class missing");\n${call}`, node, traversal); } } exports.CallTransformationTranspiler = CallTransformationTranspiler; //# sourceMappingURL=call_transformation.js.map