@abaplint/transpiler
Version:
32 lines • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ScanTranspiler = void 0;
const abaplint = require("@abaplint/core");
const chunk_1 = require("../chunk");
class ScanTranspiler {
transpile(node, traversal) {
const lookup = traversal.lookupClassOrInterface("KERNEL_SCAN_ABAP_SOURCE", node.getFirstToken());
const options = [];
let name = "";
for (const c of node.getChildren()) {
if (c instanceof abaplint.Nodes.ExpressionNode) {
options.push(name + ": " + traversal.traverse(c).getCode());
name = "";
}
else {
if (c.concatTokens().toUpperCase() === "WITH" && name !== "") {
options.push(name + ": true");
name = "";
}
if (name !== "" && name.endsWith("_") === false) {
name += "_";
}
name += c.concatTokens().toLowerCase().replace("-", "");
}
}
const call = `await ${lookup}.call({${options.join(", ")}});`;
return new chunk_1.Chunk().append(`if (${lookup} === undefined) throw new Error("ScanAbapSource, kernel class missing");\n${call}`, node, traversal);
}
}
exports.ScanTranspiler = ScanTranspiler;
//# sourceMappingURL=scan.js.map