@abaplint/transpiler
Version:
38 lines • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConstantsTranspiler = void 0;
const abaplint = require("@abaplint/core");
const statements_1 = require("../statements");
const chunk_1 = require("../chunk");
class ConstantsTranspiler {
transpile(node, traversal) {
const begin = node.findDirectStatement(abaplint.Statements.ConstantBegin);
if (begin === undefined) {
throw "ConstantsTranspilerBegin";
}
const name = begin.findDirectExpression(abaplint.Expressions.DefinitionName)?.getFirstToken().getStr();
if (name === undefined) {
throw "ConstantsTranspilerName";
}
let ret = new statements_1.DataTranspiler().transpile(begin, traversal).getCode() + "\n";
ret += ConstantsTranspiler.handleValues(name, node, traversal);
return new chunk_1.Chunk(ret);
}
static handleValues(prefix, node, traversal) {
let ret = "";
// todo: CONSTANTS BEGIN inside CONSTANTS BEGIN
for (const c of node.findDirectStatements(abaplint.Statements.Constant)) {
const field = c.findDirectExpression(abaplint.Expressions.DefinitionName)?.getFirstToken().getStr();
if (field === undefined) {
continue;
}
const value = c.findFirstExpression(abaplint.Expressions.Constant);
if (value) {
ret += `${prefix}.get().${field}.set(${traversal.traverse(value).getCode()});\n`;
}
}
return ret;
}
}
exports.ConstantsTranspiler = ConstantsTranspiler;
//# sourceMappingURL=constants.js.map