UNPKG

@abaplint/transpiler

Version:
35 lines 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TypeEnumTranspiler = void 0; const abaplint = require("@abaplint/core"); const traversal_1 = require("../traversal"); const chunk_1 = require("../chunk"); class TypeEnumTranspiler { transpile(node, _traversal) { const begin = node.findDirectStatement(abaplint.Statements.TypeEnumBegin); if (begin === undefined) { return new chunk_1.Chunk(""); } const nsNames = begin.findAllExpressions(abaplint.Expressions.NamespaceSimpleName); if (nsNames.length < 2) { return new chunk_1.Chunk(""); } const structureName = nsNames[1].concatTokens().toLowerCase(); const values = []; for (const t of node.findDirectStatements(abaplint.Statements.Type)) { const name = t.findFirstExpression(abaplint.Expressions.NamespaceSimpleName); if (name) { values.push(name.concatTokens().toLowerCase()); } } const fields = values.map(v => `"${v}": new abap.types.String()`).join(",\n"); let ret = `let ${traversal_1.Traversal.prefixVariable(structureName)} = new abap.types.Structure({ ${fields}});\n`; for (const v of values) { ret += `${traversal_1.Traversal.prefixVariable(structureName)}.get().${v}.set("${v.toUpperCase()}");\n`; } return new chunk_1.Chunk(ret); } } exports.TypeEnumTranspiler = TypeEnumTranspiler; //# sourceMappingURL=type_enum.js.map