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