1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.preparseMergeArgsExpr = exports.EXPANSION_PREFIX = exports.KEY_DELIMITER = void 0;
|
4 | exports.KEY_DELIMITER = '__dot__';
|
5 | exports.EXPANSION_PREFIX = '__exp';
|
6 | function preparseMergeArgsExpr(mergeArgsExpr) {
|
7 | const variableRegex = /\$[_A-Za-z][_A-Za-z0-9.]*/g;
|
8 | const dotRegex = /\./g;
|
9 | mergeArgsExpr = mergeArgsExpr.replace(variableRegex, variable => variable.replace(dotRegex, exports.KEY_DELIMITER));
|
10 | const segments = mergeArgsExpr.split('[[');
|
11 | const expansionExpressions = Object.create(null);
|
12 | if (segments.length === 1) {
|
13 | return { mergeArgsExpr, expansionExpressions };
|
14 | }
|
15 | let finalSegments = [segments[0]];
|
16 | for (let i = 1; i < segments.length; i++) {
|
17 | const additionalSegments = segments[i].split(']]');
|
18 | if (additionalSegments.length !== 2) {
|
19 | throw new Error(`Each opening "[[" must be matched by a closing "]]" without nesting.`);
|
20 | }
|
21 | finalSegments = finalSegments.concat(additionalSegments);
|
22 | }
|
23 | let finalMergeArgsExpr = finalSegments[0];
|
24 | for (let i = 1; i < finalSegments.length - 1; i += 2) {
|
25 | const variableName = `${exports.EXPANSION_PREFIX}${(i - 1) / 2 + 1}`;
|
26 | expansionExpressions[variableName] = finalSegments[i];
|
27 | finalMergeArgsExpr += `\$${variableName}${finalSegments[i + 1]}`;
|
28 | }
|
29 | return { mergeArgsExpr: finalMergeArgsExpr, expansionExpressions };
|
30 | }
|
31 | exports.preparseMergeArgsExpr = preparseMergeArgsExpr;
|