UNPKG

@abaplint/transpiler

Version:
34 lines 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DoTranspiler = void 0; const abaplint = require("@abaplint/core"); const expressions_1 = require("../expressions"); const unique_identifier_1 = require("../unique_identifier"); const chunk_1 = require("../chunk"); class DoTranspiler { syIndexBackup; constructor(syIndexBackup) { this.syIndexBackup = syIndexBackup; } transpile(node, traversal) { const found = node.findFirstExpression(abaplint.Expressions.Source); if (found) { const source = new expressions_1.SourceTranspiler(true).transpile(found, traversal).getCode(); const idSource = unique_identifier_1.UniqueIdentifier.get(); const id = unique_identifier_1.UniqueIdentifier.get(); return new chunk_1.Chunk(`const ${this.syIndexBackup} = abap.builtin.sy.get().index.get(); const ${idSource} = ${source}; for (let ${id} = 0; ${id} < ${idSource}; ${id}++) { abap.builtin.sy.get().index.set(${id} + 1);`); } else { const unique = unique_identifier_1.UniqueIdentifier.get(); return new chunk_1.Chunk(`const ${this.syIndexBackup} = abap.builtin.sy.get().index.get(); let ${unique} = 1; while (true) { abap.builtin.sy.get().index.set(${unique}++);`); } } } exports.DoTranspiler = DoTranspiler; //# sourceMappingURL=do.js.map