@abaplint/core
Version:
abaplint - Core API
18 lines • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CDSComposition = void 0;
const _1 = require(".");
const combi_1 = require("../../abap/2_statements/combi");
const cds_cardinality_1 = require("./cds_cardinality");
class CDSComposition extends combi_1.Expression {
getRunnable() {
const num = (0, combi_1.altPrio)("ONE", "MANY");
// Text cardinality after OF: "of exact one to many", "of one to many", or bare "of many" / "of one"
const textCardinality = (0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.opt)("EXACT"), num, "TO", num), (0, combi_1.seq)((0, combi_1.opt)("EXACT"), num));
// Only numeric cardinality [0..*] may appear before OF; text cardinality goes after OF.
const numericCardinality = (0, combi_1.seq)("[", (0, combi_1.altPrio)("0", "1", "*"), (0, combi_1.opt)((0, combi_1.seq)(".", ".", (0, combi_1.altPrio)("0", "1", "*"))), "]");
return (0, combi_1.seq)("COMPOSITION", (0, combi_1.opt)(numericCardinality), "OF", (0, combi_1.opt)((0, combi_1.altPrio)(cds_cardinality_1.CDSCardinality, textCardinality)), _1.CDSRelation);
}
}
exports.CDSComposition = CDSComposition;
//# sourceMappingURL=cds_composition.js.map