UNPKG

@abaplint/core

Version:
32 lines 2.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CDSPrefixedName = void 0; const combi_1 = require("../../abap/2_statements/combi"); const cds_name_1 = require("./cds_name"); const cds_parameters_1 = require("./cds_parameters"); const cds_parameters_select_1 = require("./cds_parameters_select"); const cds_condition_1 = require("./cds_condition"); const cds_integer_1 = require("./cds_integer"); const cds_string_1 = require("./cds_string"); class CDSPrefixedName extends combi_1.Expression { getRunnable() { // Path filter variants: // [inner], [left outer], [cross] — join-type redirect // [1:left outer], [1:inner] — cardinality + join-type // [1: condition] — cardinality + filter condition // [condition] — filter condition only const joinType = (0, combi_1.altPrio)("LEFT OUTER", "INNER", "CROSS"); const joinRedirect = (0, combi_1.seq)("[", joinType, "]"); const cardinalityJoin = (0, combi_1.seq)("[", cds_integer_1.CDSInteger, ":", joinType, "]"); // [1: left outer where (condition)] — cardinality + join-type + WHERE filter const cardinalityJoinWhere = (0, combi_1.seq)("[", cds_integer_1.CDSInteger, ":", joinType, "WHERE", cds_condition_1.CDSCondition, "]"); const pathFilter = (0, combi_1.altPrio)(cardinalityJoinWhere, cardinalityJoin, joinRedirect, (0, combi_1.seq)("[", cds_integer_1.CDSInteger, ":", cds_condition_1.CDSCondition, "]"), (0, combi_1.seq)("[", cds_condition_1.CDSCondition, "]")); // Each dotted segment may have its own path filter: A[cond].B[cond].C // The final segment may also be a string literal: #enum.'value' // A segment may have a parameterized call: _Assoc( P_Key : value ) or _Assoc[filter] const segment = (0, combi_1.seq)(".", (0, combi_1.altPrio)(cds_string_1.CDSString, cds_name_1.CDSName), (0, combi_1.opt)((0, combi_1.altPrio)(cds_parameters_select_1.CDSParametersSelect, cds_parameters_1.CDSParameters)), (0, combi_1.opt)(pathFilter)); return (0, combi_1.seq)(cds_name_1.CDSName, (0, combi_1.opt)((0, combi_1.altPrio)(cds_parameters_1.CDSParameters, cds_parameters_select_1.CDSParametersSelect)), (0, combi_1.opt)(pathFilter), (0, combi_1.starPrio)(segment)); } } exports.CDSPrefixedName = CDSPrefixedName; //# sourceMappingURL=cds_prefixed_name.js.map