@omegagrid/grid-core 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/calculations/autofill.d.ts +7 -0
- package/dist/calculations/autofill.d.ts.map +1 -0
- package/dist/calculations/autofill.js +81 -0
- package/dist/calculations/autofill.js.map +1 -0
- package/dist/calculations/calculationModel.d.ts +35 -0
- package/dist/calculations/calculationModel.d.ts.map +1 -0
- package/dist/calculations/calculationModel.js +199 -0
- package/dist/calculations/calculationModel.js.map +1 -0
- package/dist/calculations/conditions.d.ts +4 -0
- package/dist/calculations/conditions.d.ts.map +1 -0
- package/dist/calculations/conditions.js +46 -0
- package/dist/calculations/conditions.js.map +1 -0
- package/dist/calculations/context.d.ts +53 -0
- package/dist/calculations/context.d.ts.map +1 -0
- package/dist/calculations/context.js +83 -0
- package/dist/calculations/context.js.map +1 -0
- package/dist/calculations/formula.d.ts +69 -0
- package/dist/calculations/formula.d.ts.map +1 -0
- package/dist/calculations/formula.js +360 -0
- package/dist/calculations/formula.js.map +1 -0
- package/dist/calculations/functions/dates.d.ts +6 -0
- package/dist/calculations/functions/dates.d.ts.map +1 -0
- package/dist/calculations/functions/dates.js +28 -0
- package/dist/calculations/functions/dates.js.map +1 -0
- package/dist/calculations/functions/helpers.d.ts +11 -0
- package/dist/calculations/functions/helpers.d.ts.map +1 -0
- package/dist/calculations/functions/helpers.js +38 -0
- package/dist/calculations/functions/helpers.js.map +1 -0
- package/dist/calculations/functions/index.d.ts +5 -0
- package/dist/calculations/functions/index.d.ts.map +1 -0
- package/dist/calculations/functions/index.js +73 -0
- package/dist/calculations/functions/index.js.map +1 -0
- package/dist/calculations/functions/logical.d.ts +10 -0
- package/dist/calculations/functions/logical.d.ts.map +1 -0
- package/dist/calculations/functions/logical.js +49 -0
- package/dist/calculations/functions/logical.js.map +1 -0
- package/dist/calculations/functions/lookup.d.ts +17 -0
- package/dist/calculations/functions/lookup.d.ts.map +1 -0
- package/dist/calculations/functions/lookup.js +167 -0
- package/dist/calculations/functions/lookup.js.map +1 -0
- package/dist/calculations/functions/math.d.ts +62 -0
- package/dist/calculations/functions/math.d.ts.map +1 -0
- package/dist/calculations/functions/math.js +228 -0
- package/dist/calculations/functions/math.js.map +1 -0
- package/dist/calculations/functions/special.d.ts +2 -0
- package/dist/calculations/functions/special.d.ts.map +1 -0
- package/dist/calculations/functions/special.js +55 -0
- package/dist/calculations/functions/special.js.map +1 -0
- package/dist/calculations/functions/statistical.d.ts +5 -0
- package/dist/calculations/functions/statistical.d.ts.map +1 -0
- package/dist/calculations/functions/statistical.js +47 -0
- package/dist/calculations/functions/statistical.js.map +1 -0
- package/dist/calculations/functions/text.d.ts +5 -0
- package/dist/calculations/functions/text.d.ts.map +1 -0
- package/dist/calculations/functions/text.js +23 -0
- package/dist/calculations/functions/text.js.map +1 -0
- package/dist/calculations/index.d.ts +6 -0
- package/dist/calculations/index.d.ts.map +1 -0
- package/dist/calculations/index.js +22 -0
- package/dist/calculations/index.js.map +1 -0
- package/dist/calculations/operators.d.ts +19 -0
- package/dist/calculations/operators.d.ts.map +1 -0
- package/dist/calculations/operators.js +66 -0
- package/dist/calculations/operators.js.map +1 -0
- package/dist/calculations/tokenization.d.ts +34 -0
- package/dist/calculations/tokenization.d.ts.map +1 -0
- package/dist/calculations/tokenization.js +192 -0
- package/dist/calculations/tokenization.js.map +1 -0
- package/dist/comments/comments.d.ts +37 -0
- package/dist/comments/comments.d.ts.map +1 -0
- package/dist/comments/comments.js +39 -0
- package/dist/comments/comments.js.map +1 -0
- package/dist/comments/index.d.ts +2 -0
- package/dist/comments/index.d.ts.map +1 -0
- package/dist/comments/index.js +18 -0
- package/dist/comments/index.js.map +1 -0
- package/dist/common/index.d.ts +2 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +18 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/range.d.ts +65 -0
- package/dist/common/range.d.ts.map +1 -0
- package/dist/common/range.js +220 -0
- package/dist/common/range.js.map +1 -0
- package/dist/constants.d.ts +60 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +75 -0
- package/dist/constants.js.map +1 -0
- package/dist/formatting/conditionalFormats.d.ts +34 -0
- package/dist/formatting/conditionalFormats.d.ts.map +1 -0
- package/dist/formatting/conditionalFormats.js +107 -0
- package/dist/formatting/conditionalFormats.js.map +1 -0
- package/dist/formatting/index.d.ts +2 -0
- package/dist/formatting/index.d.ts.map +1 -0
- package/dist/formatting/index.js +18 -0
- package/dist/formatting/index.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/model/cellModel.d.ts +105 -0
- package/dist/model/cellModel.d.ts.map +1 -0
- package/dist/model/cellModel.js +251 -0
- package/dist/model/cellModel.js.map +1 -0
- package/dist/model/columnModel.d.ts +132 -0
- package/dist/model/columnModel.d.ts.map +1 -0
- package/dist/model/columnModel.js +147 -0
- package/dist/model/columnModel.js.map +1 -0
- package/dist/model/columnSorting.d.ts +50 -0
- package/dist/model/columnSorting.d.ts.map +1 -0
- package/dist/model/columnSorting.js +164 -0
- package/dist/model/columnSorting.js.map +1 -0
- package/dist/model/cssStyle.d.ts +18 -0
- package/dist/model/cssStyle.d.ts.map +1 -0
- package/dist/model/cssStyle.js +197 -0
- package/dist/model/cssStyle.js.map +1 -0
- package/dist/model/dependencies.d.ts +28 -0
- package/dist/model/dependencies.d.ts.map +1 -0
- package/dist/model/dependencies.js +129 -0
- package/dist/model/dependencies.js.map +1 -0
- package/dist/model/elementModel.d.ts +98 -0
- package/dist/model/elementModel.d.ts.map +1 -0
- package/dist/model/elementModel.js +109 -0
- package/dist/model/elementModel.js.map +1 -0
- package/dist/model/filterModel.d.ts +22 -0
- package/dist/model/filterModel.d.ts.map +1 -0
- package/dist/model/filterModel.js +83 -0
- package/dist/model/filterModel.js.map +1 -0
- package/dist/model/gridModel.d.ts +172 -0
- package/dist/model/gridModel.d.ts.map +1 -0
- package/dist/model/gridModel.js +639 -0
- package/dist/model/gridModel.js.map +1 -0
- package/dist/model/groupModel.d.ts +23 -0
- package/dist/model/groupModel.d.ts.map +1 -0
- package/dist/model/groupModel.js +102 -0
- package/dist/model/groupModel.js.map +1 -0
- package/dist/model/history.d.ts +21 -0
- package/dist/model/history.d.ts.map +1 -0
- package/dist/model/history.js +39 -0
- package/dist/model/history.js.map +1 -0
- package/dist/model/index.d.ts +17 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +33 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/iterableRange.d.ts +32 -0
- package/dist/model/iterableRange.d.ts.map +1 -0
- package/dist/model/iterableRange.js +79 -0
- package/dist/model/iterableRange.js.map +1 -0
- package/dist/model/namingModel.d.ts +24 -0
- package/dist/model/namingModel.d.ts.map +1 -0
- package/dist/model/namingModel.js +75 -0
- package/dist/model/namingModel.js.map +1 -0
- package/dist/model/options.d.ts +56 -0
- package/dist/model/options.d.ts.map +1 -0
- package/dist/model/options.js +27 -0
- package/dist/model/options.js.map +1 -0
- package/dist/model/rowModel.d.ts +91 -0
- package/dist/model/rowModel.d.ts.map +1 -0
- package/dist/model/rowModel.js +137 -0
- package/dist/model/rowModel.js.map +1 -0
- package/dist/model/selectionModel.d.ts +20 -0
- package/dist/model/selectionModel.d.ts.map +1 -0
- package/dist/model/selectionModel.js +45 -0
- package/dist/model/selectionModel.js.map +1 -0
- package/dist/model/style.d.ts +73 -0
- package/dist/model/style.d.ts.map +1 -0
- package/dist/model/style.js +38 -0
- package/dist/model/style.js.map +1 -0
- package/dist/model/styleModel.d.ts +20 -0
- package/dist/model/styleModel.d.ts.map +1 -0
- package/dist/model/styleModel.js +85 -0
- package/dist/model/styleModel.js.map +1 -0
- package/dist/sparklines/index.d.ts +2 -0
- package/dist/sparklines/index.d.ts.map +1 -0
- package/dist/sparklines/index.js +18 -0
- package/dist/sparklines/index.js.map +1 -0
- package/dist/sparklines/sparklines.d.ts +61 -0
- package/dist/sparklines/sparklines.d.ts.map +1 -0
- package/dist/sparklines/sparklines.js +185 -0
- package/dist/sparklines/sparklines.js.map +1 -0
- package/dist/types.d.ts +27 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Formula = exports.stripFormulaPrefix = exports.prefixFormula = exports.isFormula = void 0;
|
|
4
|
+
const tokenization_1 = require("./tokenization");
|
|
5
|
+
const common_1 = require("../common");
|
|
6
|
+
const operators_1 = require("./operators");
|
|
7
|
+
const functions_1 = require("./functions");
|
|
8
|
+
const isFormula = (value) => value && value.length > 0 && value.charAt(0) == '=' ? true : false;
|
|
9
|
+
exports.isFormula = isFormula;
|
|
10
|
+
const prefixFormula = (value) => (0, exports.isFormula)(value) ? value : ('=' + (value !== null && value !== void 0 ? value : ''));
|
|
11
|
+
exports.prefixFormula = prefixFormula;
|
|
12
|
+
const stripFormulaPrefix = (value) => (0, exports.isFormula)(value) ? value.substring(1) : value;
|
|
13
|
+
exports.stripFormulaPrefix = stripFormulaPrefix;
|
|
14
|
+
const colors = ['#5B97FF', '#FF616B', '#B77CFF', '#00B02C', '#FC58BE', '#FF9000', '#2EB0B3'];
|
|
15
|
+
const getColor = (index) => colors[index % colors.length];
|
|
16
|
+
const getTokenSize = (token) => token[0].length + (token[1] == tokenization_1.TokenType.Sheet ? 3 : 0);
|
|
17
|
+
class Formula {
|
|
18
|
+
get fn() { var _a; return (_a = this._fn) !== null && _a !== void 0 ? _a : (this._fn = (new Function('t', 'ctx', 'return ' + this.compile()))); }
|
|
19
|
+
get tokens() { return this._tokens; }
|
|
20
|
+
get variables() { return this._variables; }
|
|
21
|
+
get cells() { return this._cells; }
|
|
22
|
+
get ranges() { return this._ranges; }
|
|
23
|
+
get colors() {
|
|
24
|
+
const colormap = new Map();
|
|
25
|
+
for (let i = 0; i < this._tokens.length; i++) {
|
|
26
|
+
const t = this._tokens[i];
|
|
27
|
+
if ([tokenization_1.TokenType.Variable, tokenization_1.TokenType.Cell, tokenization_1.TokenType.Range].includes(t[1])) {
|
|
28
|
+
const sheet = i > 0 && this._tokens[i - 1][1] == tokenization_1.TokenType.Sheet ? this._tokens[i - 1][0] : null;
|
|
29
|
+
const key = (sheet ? ('\'' + sheet + '\'!') : '') + t[0];
|
|
30
|
+
colormap.set(key, { color: getColor(colormap.size), address: t[0], sheet: sheet, type: t[1], tokenIndex: i });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return colormap;
|
|
34
|
+
}
|
|
35
|
+
constructor(expression, tokenizer) {
|
|
36
|
+
this.expression = expression;
|
|
37
|
+
this.tokenizer = tokenizer;
|
|
38
|
+
this._tokens = tokenizer.tokenize(this.expression);
|
|
39
|
+
this.updateDependecies();
|
|
40
|
+
}
|
|
41
|
+
findTokenIndexAtPosition(pos) {
|
|
42
|
+
let i = 0;
|
|
43
|
+
return this._tokens.findIndex(token => {
|
|
44
|
+
const size = getTokenSize(token);
|
|
45
|
+
if (pos >= i && pos <= i + size)
|
|
46
|
+
return true;
|
|
47
|
+
i += size;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
getTokenPosition(index) {
|
|
51
|
+
let min = 0;
|
|
52
|
+
for (let i = 0; i < index; i++) {
|
|
53
|
+
min += getTokenSize(this._tokens[i]);
|
|
54
|
+
}
|
|
55
|
+
return { min: min, max: min + getTokenSize(this._tokens[index]) };
|
|
56
|
+
}
|
|
57
|
+
updateToken(index, newValue) {
|
|
58
|
+
this._fn = null;
|
|
59
|
+
this._formula = null;
|
|
60
|
+
this._tokens[index][0] = newValue;
|
|
61
|
+
}
|
|
62
|
+
removeToken(index) {
|
|
63
|
+
this._fn = null;
|
|
64
|
+
this._formula = null;
|
|
65
|
+
this._tokens.splice(index, 1);
|
|
66
|
+
}
|
|
67
|
+
insertToken(index, value, type) {
|
|
68
|
+
this._fn = null;
|
|
69
|
+
this._formula = null;
|
|
70
|
+
this._tokens.splice(index, 0, [value, type]);
|
|
71
|
+
}
|
|
72
|
+
clone() {
|
|
73
|
+
return new Formula(this.createFormulaString(), this.tokenizer);
|
|
74
|
+
}
|
|
75
|
+
updateDependecies() {
|
|
76
|
+
this._variables = [];
|
|
77
|
+
this._cells = [];
|
|
78
|
+
this._ranges = [];
|
|
79
|
+
let sheet;
|
|
80
|
+
this._tokens.forEach((t, i) => {
|
|
81
|
+
switch (t[1]) {
|
|
82
|
+
case tokenization_1.TokenType.Sheet:
|
|
83
|
+
sheet = t[0];
|
|
84
|
+
break;
|
|
85
|
+
case tokenization_1.TokenType.Variable:
|
|
86
|
+
this._variables.push([i, t[0], sheet]);
|
|
87
|
+
sheet = undefined;
|
|
88
|
+
break;
|
|
89
|
+
case tokenization_1.TokenType.Cell:
|
|
90
|
+
this._cells.push([i, common_1.CellRange.fromA1(t[0]), sheet]);
|
|
91
|
+
sheet = undefined;
|
|
92
|
+
break;
|
|
93
|
+
case tokenization_1.TokenType.Range:
|
|
94
|
+
this._ranges.push([i, common_1.CellRange.fromA1(t[0]), sheet]);
|
|
95
|
+
sheet = undefined;
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
getNamedColor(name) {
|
|
101
|
+
var _a, _b;
|
|
102
|
+
return (_b = (_a = this.colors.get(name)) === null || _a === void 0 ? void 0 : _a.color) !== null && _b !== void 0 ? _b : 'inherit';
|
|
103
|
+
}
|
|
104
|
+
createFormulaString(html = false, fnPrefix = null) {
|
|
105
|
+
const opts = this.tokenizer.options;
|
|
106
|
+
let formula = '';
|
|
107
|
+
let token;
|
|
108
|
+
for (let i = 0; i < this._tokens.length; i++) {
|
|
109
|
+
token = this._tokens[i];
|
|
110
|
+
switch (token[1]) {
|
|
111
|
+
case tokenization_1.TokenType.SheetQuote:
|
|
112
|
+
formula += '\'';
|
|
113
|
+
break;
|
|
114
|
+
case tokenization_1.TokenType.SheetSeparator:
|
|
115
|
+
formula += '!';
|
|
116
|
+
break;
|
|
117
|
+
case tokenization_1.TokenType.Sheet:
|
|
118
|
+
formula += html ? `<span style="font-style:italic">${token[0]}</span>` : token[0];
|
|
119
|
+
break;
|
|
120
|
+
case tokenization_1.TokenType.Variable:
|
|
121
|
+
formula += token[0];
|
|
122
|
+
break;
|
|
123
|
+
case tokenization_1.TokenType.Range:
|
|
124
|
+
case tokenization_1.TokenType.Cell:
|
|
125
|
+
formula += html ? `<span style="color:${this.getNamedColor(token[0])}">${token[0]}</span>` : token[0];
|
|
126
|
+
break;
|
|
127
|
+
case tokenization_1.TokenType.StringQuote:
|
|
128
|
+
formula += opts.stringQuote;
|
|
129
|
+
break;
|
|
130
|
+
case tokenization_1.TokenType.String:
|
|
131
|
+
formula += token[0].replace(new RegExp(opts.stringQuote, 'g'), '\\' + opts.stringQuote);
|
|
132
|
+
break;
|
|
133
|
+
case tokenization_1.TokenType.ArgumentSeparator:
|
|
134
|
+
formula += opts.argumentSeparator;
|
|
135
|
+
break;
|
|
136
|
+
case tokenization_1.TokenType.Function:
|
|
137
|
+
formula += (fnPrefix ? (fnPrefix + '.') : '') + token[0];
|
|
138
|
+
break;
|
|
139
|
+
case tokenization_1.TokenType.Unknown:
|
|
140
|
+
formula += html
|
|
141
|
+
? `<span style="background:#f00;color:#fff">${token[0]}</span>`
|
|
142
|
+
: token[0];
|
|
143
|
+
break;
|
|
144
|
+
default:
|
|
145
|
+
formula += token[0];
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return formula;
|
|
150
|
+
}
|
|
151
|
+
createExpressionTree() {
|
|
152
|
+
const nodeStack = [];
|
|
153
|
+
const operatorStack = [];
|
|
154
|
+
const tokens = this.tokens;
|
|
155
|
+
let token, operator;
|
|
156
|
+
let op1, op2;
|
|
157
|
+
let sheet = null;
|
|
158
|
+
let nodes;
|
|
159
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
160
|
+
token = tokens[i];
|
|
161
|
+
switch (token[1]) {
|
|
162
|
+
case tokenization_1.TokenType.Sheet:
|
|
163
|
+
sheet = token[0];
|
|
164
|
+
break;
|
|
165
|
+
case tokenization_1.TokenType.Cell:
|
|
166
|
+
case tokenization_1.TokenType.Range:
|
|
167
|
+
nodeStack.push({ t: token[0], tt: token[1], s: sheet });
|
|
168
|
+
sheet = null;
|
|
169
|
+
break;
|
|
170
|
+
case tokenization_1.TokenType.Number:
|
|
171
|
+
case tokenization_1.TokenType.String:
|
|
172
|
+
case tokenization_1.TokenType.Boolean:
|
|
173
|
+
case tokenization_1.TokenType.Variable:
|
|
174
|
+
nodeStack.push({ t: token[0], tt: token[1] });
|
|
175
|
+
break;
|
|
176
|
+
case tokenization_1.TokenType.Operator:
|
|
177
|
+
op1 = operators_1.operatorMap.get(token[0]);
|
|
178
|
+
while (operatorStack.length > 0) {
|
|
179
|
+
op2 = operators_1.operatorMap.get(operatorStack[operatorStack.length - 1][0]);
|
|
180
|
+
if (!op2)
|
|
181
|
+
break;
|
|
182
|
+
// operators with higher precedence or equal precedence and left associativity
|
|
183
|
+
if (!(op1[2] === 0 && op1[1] <= op2[1]) && !(op1[2] === 1 && op1[1] < op2[1]))
|
|
184
|
+
break;
|
|
185
|
+
operator = operatorStack.pop();
|
|
186
|
+
nodes = [nodeStack.pop(), nodeStack.pop()].reverse();
|
|
187
|
+
nodeStack.push({ t: operator[0], tt: operator[1], c: nodes });
|
|
188
|
+
}
|
|
189
|
+
operatorStack.push(token);
|
|
190
|
+
break;
|
|
191
|
+
case tokenization_1.TokenType.Function:
|
|
192
|
+
operatorStack.push(token);
|
|
193
|
+
break;
|
|
194
|
+
case tokenization_1.TokenType.OpenBracket:
|
|
195
|
+
operatorStack.push(token);
|
|
196
|
+
break;
|
|
197
|
+
case tokenization_1.TokenType.ArgumentSeparator:
|
|
198
|
+
while (operatorStack.length > 0) {
|
|
199
|
+
// evaluate expression until previous argument separator or open bracket
|
|
200
|
+
operator = operatorStack[operatorStack.length - 1];
|
|
201
|
+
if ([tokenization_1.TokenType.OpenBracket, tokenization_1.TokenType.ArgumentSeparator].includes(operator[1])) {
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
operator = operatorStack.pop();
|
|
205
|
+
nodes = [nodeStack.pop(), nodeStack.pop()].reverse();
|
|
206
|
+
nodeStack.push({ t: operator[0], tt: operator[1], c: nodes });
|
|
207
|
+
}
|
|
208
|
+
operatorStack.push(token);
|
|
209
|
+
break;
|
|
210
|
+
case tokenization_1.TokenType.CloseBracket:
|
|
211
|
+
nodes = [];
|
|
212
|
+
while (operatorStack.length > 0) {
|
|
213
|
+
if (operatorStack[operatorStack.length - 1][1] === tokenization_1.TokenType.OpenBracket) {
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
operator = operatorStack.pop();
|
|
217
|
+
if (operator[1] == tokenization_1.TokenType.Operator) {
|
|
218
|
+
// nodes array contains operands for the current operator
|
|
219
|
+
nodes.push({ t: operator[0], tt: operator[1], c: [nodeStack.pop(), nodeStack.pop()].reverse() });
|
|
220
|
+
}
|
|
221
|
+
else if (operator[1] == tokenization_1.TokenType.ArgumentSeparator) {
|
|
222
|
+
// nodes array contains arguments of the function
|
|
223
|
+
if (nodeStack.length > 0)
|
|
224
|
+
nodes.push(nodeStack.pop());
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
operatorStack.pop(); // pop the open bracket
|
|
228
|
+
if (operatorStack.length > 0 && operatorStack[operatorStack.length - 1][1] === tokenization_1.TokenType.Function) {
|
|
229
|
+
// current token is closing bracket of a function
|
|
230
|
+
operator = operatorStack.pop(); // pop function from operator stack
|
|
231
|
+
nodes = nodes.reverse();
|
|
232
|
+
if (nodeStack.length > 0 && tokens[i - 1][1] !== tokenization_1.TokenType.OpenBracket) {
|
|
233
|
+
nodes.unshift(nodeStack.pop()); // prepend first argument unless the function has zero arguments
|
|
234
|
+
}
|
|
235
|
+
nodeStack.push({ t: operator[0], tt: operator[1], c: nodes });
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
// current token is closing bracket of an expression
|
|
239
|
+
nodeStack.push(...nodes);
|
|
240
|
+
}
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
while (operatorStack.length > 0) {
|
|
245
|
+
operator = operatorStack.pop();
|
|
246
|
+
nodeStack.push({ t: operator[0], tt: operator[1], c: [nodeStack.pop(), nodeStack.pop()].reverse() });
|
|
247
|
+
}
|
|
248
|
+
return nodeStack.pop();
|
|
249
|
+
}
|
|
250
|
+
createExpressionJSCode(node, parent, arrayMode) {
|
|
251
|
+
let args;
|
|
252
|
+
switch (node.tt) {
|
|
253
|
+
case tokenization_1.TokenType.Range:
|
|
254
|
+
return 't.rn(\'' + node.t + '\'' + (node.s ? (',\'' + node.s + '\'') : '') + ')';
|
|
255
|
+
case tokenization_1.TokenType.Cell:
|
|
256
|
+
return 't.cl(\'' + node.t + '\'' + (node.s ? (',\'' + node.s + '\'') : '') + ')';
|
|
257
|
+
case tokenization_1.TokenType.Variable:
|
|
258
|
+
if (arrayMode || (parent === null || parent === void 0 ? void 0 : parent.tt) === tokenization_1.TokenType.Function) {
|
|
259
|
+
return 't.nr(\'' + node.t + '\'' + (node.s ? (',\'' + node.s + '\'') : '') + ')';
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
return 't.nv(\'' + node.t + '\'' + (node.s ? (',\'' + node.s + '\'') : '') + ')';
|
|
263
|
+
}
|
|
264
|
+
case tokenization_1.TokenType.String:
|
|
265
|
+
return '\'' + node.t.replace(/'/g, "\\'") + '\'';
|
|
266
|
+
case tokenization_1.TokenType.Boolean:
|
|
267
|
+
return node.t[0].toUpperCase() == 'T' ? '1' : '0';
|
|
268
|
+
case tokenization_1.TokenType.Function:
|
|
269
|
+
args = node.c.map(n => this.createExpressionJSCode(n, node, arrayMode || (0, functions_1.isArrayFunction)(node.t)));
|
|
270
|
+
return 't.fn(\'' + node.t + '\').call(ctx' + (args.length > 0 ? (',' + args.join(',')) : '') + ')';
|
|
271
|
+
case tokenization_1.TokenType.Operator:
|
|
272
|
+
if (arrayMode) {
|
|
273
|
+
args = node.c.map(n => this.createExpressionJSCode(n, node, arrayMode || (0, functions_1.isArrayFunction)(node.t)));
|
|
274
|
+
return 't.op(' + args[0] + ',' + args[1] + ',\'' + node.t + '\')';
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
return '(' + node.c.map(n => this.createExpressionJSCode(n, node, arrayMode)).join(node.t) + ')';
|
|
278
|
+
}
|
|
279
|
+
default:
|
|
280
|
+
return node.t;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
compile() {
|
|
284
|
+
const tree = this.createExpressionTree();
|
|
285
|
+
return this.createExpressionJSCode(tree);
|
|
286
|
+
}
|
|
287
|
+
toString(prefix = false) {
|
|
288
|
+
var _a;
|
|
289
|
+
return (prefix ? '=' : '') + ((_a = this._formula) !== null && _a !== void 0 ? _a : (this._formula = this.createFormulaString()));
|
|
290
|
+
}
|
|
291
|
+
toExcelString() {
|
|
292
|
+
var _a;
|
|
293
|
+
return ((_a = this._formula) !== null && _a !== void 0 ? _a : (this._formula = this.createFormulaString(false, '_xlfn')));
|
|
294
|
+
}
|
|
295
|
+
shift(index, offset, direction, maxIndex = null) {
|
|
296
|
+
if (this._cells)
|
|
297
|
+
this._cells.forEach(cell => {
|
|
298
|
+
//if (cell[2] != sheet) return;
|
|
299
|
+
switch (direction) {
|
|
300
|
+
case 'up':
|
|
301
|
+
cell[1].shiftUp(index, offset, maxIndex);
|
|
302
|
+
break;
|
|
303
|
+
case 'right':
|
|
304
|
+
cell[1].shiftRight(index, offset, maxIndex);
|
|
305
|
+
break;
|
|
306
|
+
case 'down':
|
|
307
|
+
cell[1].shiftDown(index, offset, maxIndex);
|
|
308
|
+
break;
|
|
309
|
+
case 'left':
|
|
310
|
+
cell[1].shiftLeft(index, offset, maxIndex);
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
this._tokens[cell[0]][0] = cell[1].A1;
|
|
314
|
+
});
|
|
315
|
+
if (this._ranges)
|
|
316
|
+
this._ranges.forEach(range => {
|
|
317
|
+
//if (range[2] != sheet) return;
|
|
318
|
+
switch (direction) {
|
|
319
|
+
case 'up':
|
|
320
|
+
range[1].shiftUp(index, offset, maxIndex);
|
|
321
|
+
break;
|
|
322
|
+
case 'right':
|
|
323
|
+
range[1].shiftRight(index, offset, maxIndex);
|
|
324
|
+
break;
|
|
325
|
+
case 'down':
|
|
326
|
+
range[1].shiftDown(index, offset, maxIndex);
|
|
327
|
+
break;
|
|
328
|
+
case 'left':
|
|
329
|
+
range[1].shiftLeft(index, offset, maxIndex);
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
332
|
+
this._tokens[range[0]][0] = range[1].A1;
|
|
333
|
+
});
|
|
334
|
+
return this;
|
|
335
|
+
}
|
|
336
|
+
hasSheetReference(sheet) {
|
|
337
|
+
for (const cell of this._cells)
|
|
338
|
+
if (cell[2] == sheet)
|
|
339
|
+
return true;
|
|
340
|
+
for (const range of this._ranges)
|
|
341
|
+
if (range[2] == sheet)
|
|
342
|
+
return true;
|
|
343
|
+
for (const variable of this._variables)
|
|
344
|
+
if (variable[2] == sheet)
|
|
345
|
+
return true;
|
|
346
|
+
return false;
|
|
347
|
+
}
|
|
348
|
+
renameSheet(oldName, newName) {
|
|
349
|
+
let renamed = false;
|
|
350
|
+
this._tokens.forEach(t => {
|
|
351
|
+
if (t[1] == tokenization_1.TokenType.Sheet && t[0] == oldName) {
|
|
352
|
+
t[0] = newName;
|
|
353
|
+
renamed = true;
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
return renamed;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
exports.Formula = Formula;
|
|
360
|
+
//# sourceMappingURL=formula.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formula.js","sourceRoot":"","sources":["../../src/calculations/formula.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Arg } from "./helpers";
|
|
2
|
+
export declare function weekday(sn: number, returnType?: number): number;
|
|
3
|
+
export declare function workday(sn: Arg<number>, count: number, _holidays?: number[]): number;
|
|
4
|
+
export declare function today(): number;
|
|
5
|
+
export declare function isBlank(value: Arg): boolean;
|
|
6
|
+
//# sourceMappingURL=dates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../../src/calculations/functions/dates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAU,MAAM,WAAW,CAAC;AAExC,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,UAOtD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,UAE3E;AAED,wBAAgB,KAAK,WAEpB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,WAGjC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isBlank = exports.today = exports.workday = exports.weekday = void 0;
|
|
4
|
+
const core_1 = require("@omegagrid/core");
|
|
5
|
+
const helpers_1 = require("./helpers");
|
|
6
|
+
function weekday(sn, returnType) {
|
|
7
|
+
const d = core_1.dates.serialDateToDate(sn).getDay();
|
|
8
|
+
switch (returnType) {
|
|
9
|
+
case 2: return d;
|
|
10
|
+
case 3: return d - 1;
|
|
11
|
+
default: return (d % 7) + 1; // 1
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.weekday = weekday;
|
|
15
|
+
function workday(sn, count, _holidays) {
|
|
16
|
+
return core_1.dates.workday((0, helpers_1.scalar)(sn), count);
|
|
17
|
+
}
|
|
18
|
+
exports.workday = workday;
|
|
19
|
+
function today() {
|
|
20
|
+
return core_1.dates.dateToSerialDate(new Date());
|
|
21
|
+
}
|
|
22
|
+
exports.today = today;
|
|
23
|
+
function isBlank(value) {
|
|
24
|
+
value = (0, helpers_1.scalar)(value);
|
|
25
|
+
return value == null || value === '';
|
|
26
|
+
}
|
|
27
|
+
exports.isBlank = isBlank;
|
|
28
|
+
//# sourceMappingURL=dates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dates.js","sourceRoot":"","sources":["../../../src/calculations/functions/dates.ts"],"names":[],"mappings":";;;AAAA,0CAAwC;AACxC,uCAAwC;AAExC,SAAgB,OAAO,CAAC,EAAU,EAAE,UAAmB;IACtD,MAAM,CAAC,GAAG,YAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9C,QAAQ,UAAU,EAAE,CAAC;QACpB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACjB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;IAClC,CAAC;AACF,CAAC;AAPD,0BAOC;AAED,SAAgB,OAAO,CAAC,EAAe,EAAE,KAAa,EAAE,SAAoB;IAC3E,OAAO,YAAK,CAAC,OAAO,CAAC,IAAA,gBAAM,EAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAFD,0BAEC;AAED,SAAgB,KAAK;IACpB,OAAO,YAAK,CAAC,gBAAgB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAFD,sBAEC;AAED,SAAgB,OAAO,CAAC,KAAU;IACjC,KAAK,GAAG,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC;IACtB,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;AACtC,CAAC;AAHD,0BAGC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Matrix } from "@omegagrid/core";
|
|
2
|
+
import { FormulaContext } from "..";
|
|
3
|
+
export type Value = number | string | boolean | null;
|
|
4
|
+
export type ArrayArg<T = Value> = Matrix<T> | Matrix<T>[];
|
|
5
|
+
export type Arg<T = Value> = T | ArrayArg<T>;
|
|
6
|
+
export declare function getFormulaCells(ctx: FormulaContext): import("../..").CellModel[];
|
|
7
|
+
export declare function scalar<T>(value: Arg<T>): T;
|
|
8
|
+
export declare function matrix<T>(value: Arg<T>): Matrix<T>;
|
|
9
|
+
export declare function eachValue<T>(values: Arg<T>, callback: (value: T, r: number, c: number) => unknown | undefined | boolean, r?: number, c?: number): unknown | undefined | boolean;
|
|
10
|
+
export declare function valuesToArray<T>(values: Arg<T>): T[];
|
|
11
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/calculations/functions/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAEpC,MAAM,MAAM,KAAK,GAAG,MAAM,GAAC,MAAM,GAAC,OAAO,GAAC,IAAI,CAAC;AAC/C,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,GAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE3C,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,+BAElD;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAM1C;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAElD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EACd,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,GAAC,SAAS,GAAC,OAAO,EACvE,CAAC,CAAC,EAAE,MAAM,EACV,CAAC,CAAC,EAAE,MAAM,GACR,OAAO,GAAC,SAAS,GAAC,OAAO,CAS3B;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,OAI9C"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.valuesToArray = exports.eachValue = exports.matrix = exports.scalar = exports.getFormulaCells = void 0;
|
|
4
|
+
function getFormulaCells(ctx) {
|
|
5
|
+
return ctx.formula.cells.map(item => ctx.cell.model.getCellByRange(item[1]));
|
|
6
|
+
}
|
|
7
|
+
exports.getFormulaCells = getFormulaCells;
|
|
8
|
+
function scalar(value) {
|
|
9
|
+
let result = value;
|
|
10
|
+
while (Array.isArray(result)) {
|
|
11
|
+
result = result.length > 0 ? result[0] : null;
|
|
12
|
+
}
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
exports.scalar = scalar;
|
|
16
|
+
function matrix(value) {
|
|
17
|
+
return (Array.isArray(value) ? value : [[value]]);
|
|
18
|
+
}
|
|
19
|
+
exports.matrix = matrix;
|
|
20
|
+
function eachValue(values, callback, r, c) {
|
|
21
|
+
if (Array.isArray(values)) {
|
|
22
|
+
for (let i = 0; i < values.length; i++) {
|
|
23
|
+
if (eachValue(values[i], callback, r == null ? i : r, r == null ? undefined : i) === false)
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return callback(values, r, c);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.eachValue = eachValue;
|
|
32
|
+
function valuesToArray(values) {
|
|
33
|
+
const arr = [];
|
|
34
|
+
eachValue(values, v => arr.push(v));
|
|
35
|
+
return arr;
|
|
36
|
+
}
|
|
37
|
+
exports.valuesToArray = valuesToArray;
|
|
38
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/calculations/functions/helpers.ts"],"names":[],"mappings":";;;AAOA,SAAgB,eAAe,CAAC,GAAmB;IAClD,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAFD,0CAEC;AAED,SAAgB,MAAM,CAAI,KAAa;IACtC,IAAI,MAAM,GAAY,KAAK,CAAC;IAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IACD,OAAO,MAAW,CAAC;AACpB,CAAC;AAND,wBAMC;AAED,SAAgB,MAAM,CAAI,KAAa;IACtC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAc,CAAC;AAChE,CAAC;AAFD,wBAEC;AAED,SAAgB,SAAS,CACxB,MAAc,EACd,QAAuE,EACvE,CAAU,EACV,CAAU;IAEV,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK;gBACnG,OAAO,KAAK,CAAC;QACf,CAAC;IACF,CAAC;SAAM,CAAC;QACP,OAAO,QAAQ,CAAC,MAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;AACF,CAAC;AAdD,8BAcC;AAED,SAAgB,aAAa,CAAI,MAAc;IAC9C,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC;AACZ,CAAC;AAJD,sCAIC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/calculations/functions/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAU9C,QAAA,MAAM,SAAS,8BAAqC,CAAC;AAUrD,QAAA,MAAM,eAAe,SAAU,MAAM,YAA0B,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.isArrayFunction = exports.functions = void 0;
|
|
27
|
+
const textFunctions = __importStar(require("./text"));
|
|
28
|
+
const dateFunctions = __importStar(require("./dates"));
|
|
29
|
+
const mathFunctions = __importStar(require("./math"));
|
|
30
|
+
const lookupFunctions = __importStar(require("./lookup"));
|
|
31
|
+
const specialFunctions = __importStar(require("./special"));
|
|
32
|
+
const logicalFunctions = __importStar(require("./logical"));
|
|
33
|
+
const statisticalFunctions = __importStar(require("./statistical"));
|
|
34
|
+
const core_1 = require("@omegagrid/core");
|
|
35
|
+
function addModuleFunctions(map, module) {
|
|
36
|
+
Object.keys(module).forEach(name => map.set(core_1.utils.trim(name, '_').replace(/_/g, '.').toUpperCase(), module[name]));
|
|
37
|
+
}
|
|
38
|
+
const functions = new Map();
|
|
39
|
+
exports.functions = functions;
|
|
40
|
+
addModuleFunctions(functions, textFunctions);
|
|
41
|
+
addModuleFunctions(functions, dateFunctions);
|
|
42
|
+
addModuleFunctions(functions, mathFunctions);
|
|
43
|
+
addModuleFunctions(functions, lookupFunctions);
|
|
44
|
+
addModuleFunctions(functions, logicalFunctions);
|
|
45
|
+
addModuleFunctions(functions, specialFunctions);
|
|
46
|
+
addModuleFunctions(functions, statisticalFunctions);
|
|
47
|
+
const isArrayFunction = (name) => name === 'SUMPRODUCT';
|
|
48
|
+
exports.isArrayFunction = isArrayFunction;
|
|
49
|
+
/*
|
|
50
|
+
function dec1(value: boolean) {
|
|
51
|
+
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
|
|
52
|
+
descriptor.enumerable = value;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
class MyClass {
|
|
56
|
+
@dec1(true)
|
|
57
|
+
static myMethod(arg1: number, arg2: string) {
|
|
58
|
+
console.log('myMethod');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function callStaticMethods(classObj: any) {
|
|
63
|
+
Object.getOwnPropertyNames(classObj)
|
|
64
|
+
.filter(name => typeof classObj[name] === 'function')
|
|
65
|
+
.forEach(methodName => {
|
|
66
|
+
console.log(`Calling ${methodName}`);
|
|
67
|
+
classObj[methodName]();
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
callStaticMethods(MyClass);
|
|
72
|
+
*/
|
|
73
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/calculations/functions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAwC;AACxC,uDAAyC;AACzC,sDAAwC;AACxC,0DAA4C;AAC5C,4DAA8C;AAC9C,4DAA8C;AAC9C,oEAAsD;AAEtD,0CAAwC;AAExC,SAAS,kBAAkB,CAAC,GAAiC,EAAE,MAAc;IAC5E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAC1C,YAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EACrD,MAA0C,CAAC,IAAI,CAAC,CAAC,CAClD,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;AAY5C,8BAAS;AAXlB,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC7C,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC7C,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC7C,kBAAkB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC/C,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAChD,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAChD,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAGpD,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC;AAE5C,0CAAe;AAEnC;;;;;;;;;;;;;;;;;;;;;;;EAuBE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ArrayArg } from "./helpers";
|
|
2
|
+
export declare function and(...args: ArrayArg): boolean;
|
|
3
|
+
export declare function or(...args: ArrayArg): boolean;
|
|
4
|
+
export declare function xor(...args: ArrayArg): boolean;
|
|
5
|
+
export declare function _switch(...args: unknown[]): unknown;
|
|
6
|
+
export declare function _if(condition: unknown, ifTrue: unknown, ifFalse: unknown): unknown;
|
|
7
|
+
export declare function not(value: unknown): boolean;
|
|
8
|
+
export declare function _false(): boolean;
|
|
9
|
+
export declare function _true(): boolean;
|
|
10
|
+
//# sourceMappingURL=logical.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logical.d.ts","sourceRoot":"","sources":["../../../src/calculations/functions/logical.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,WAAW,CAAC;AAEhD,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,WAIpC;AAED,wBAAgB,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,WAInC;AAED,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,QAAQ,WAOpC;AAED,wBAAgB,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,WAOzC;AAED,wBAAgB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,WAAyC;AAClH,wBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,WAAmB;AACrD,wBAAgB,MAAM,YAAmB;AACzC,wBAAgB,KAAK,YAAkB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._true = exports._false = exports.not = exports._if = exports._switch = exports.xor = exports.or = exports.and = void 0;
|
|
4
|
+
const helpers_1 = require("./helpers");
|
|
5
|
+
function and(...args) {
|
|
6
|
+
let result = true;
|
|
7
|
+
(0, helpers_1.eachValue)(args, v => { if (!v)
|
|
8
|
+
return (result = false); });
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
exports.and = and;
|
|
12
|
+
function or(...args) {
|
|
13
|
+
let result = false;
|
|
14
|
+
(0, helpers_1.eachValue)(args, v => { if (v)
|
|
15
|
+
return (result = true); });
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
exports.or = or;
|
|
19
|
+
function xor(...args) {
|
|
20
|
+
let result = null;
|
|
21
|
+
(0, helpers_1.eachValue)(args, v => {
|
|
22
|
+
if (result === null)
|
|
23
|
+
result = !!v;
|
|
24
|
+
else
|
|
25
|
+
result = (!!v != result);
|
|
26
|
+
});
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
exports.xor = xor;
|
|
30
|
+
function _switch(...args) {
|
|
31
|
+
const expression = args[0];
|
|
32
|
+
for (let i = 1; i < args.length; i += 2) {
|
|
33
|
+
if (i == args.length - 1)
|
|
34
|
+
return args[i];
|
|
35
|
+
else if (expression == args[i])
|
|
36
|
+
return args[i + 1];
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
exports._switch = _switch;
|
|
41
|
+
function _if(condition, ifTrue, ifFalse) { return condition ? ifTrue : ifFalse; }
|
|
42
|
+
exports._if = _if;
|
|
43
|
+
function not(value) { return !value; }
|
|
44
|
+
exports.not = not;
|
|
45
|
+
function _false() { return false; }
|
|
46
|
+
exports._false = _false;
|
|
47
|
+
function _true() { return true; }
|
|
48
|
+
exports._true = _true;
|
|
49
|
+
//# sourceMappingURL=logical.js.map
|