@leankylin-sheet/formula-parser 4.0.42 → 4.0.43
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/evaluate-by-operator/operator/equal.d.ts +1 -1
- package/dist/evaluate-by-operator/operator/greater-than.d.ts +1 -1
- package/dist/evaluate-by-operator/operator/less-than.d.ts +1 -1
- package/dist/helper/number.d.ts +1 -0
- package/dist/index.esm.js +101 -2
- package/dist/index.js +101 -2
- package/package.json +1 -1
package/dist/helper/number.d.ts
CHANGED
package/dist/index.esm.js
CHANGED
|
@@ -177,6 +177,9 @@ function _nonIterableRest() {
|
|
|
177
177
|
function toNumber(number) {
|
|
178
178
|
var _result;
|
|
179
179
|
var result;
|
|
180
|
+
if (number === true) {
|
|
181
|
+
return 1;
|
|
182
|
+
}
|
|
180
183
|
if (typeof number === 'number') {
|
|
181
184
|
result = number;
|
|
182
185
|
} else if (typeof number === 'string') {
|
|
@@ -194,6 +197,22 @@ function toNumber(number) {
|
|
|
194
197
|
function invertNumber(number) {
|
|
195
198
|
return -1 * toNumber(number);
|
|
196
199
|
}
|
|
200
|
+
function toNumberNotNaN(number) {
|
|
201
|
+
var _result2;
|
|
202
|
+
var result;
|
|
203
|
+
if (number === true) {
|
|
204
|
+
return 1;
|
|
205
|
+
}
|
|
206
|
+
if (typeof number === 'number') {
|
|
207
|
+
result = number;
|
|
208
|
+
} else if (typeof number === 'string') {
|
|
209
|
+
result = number.indexOf('.') > -1 ? parseFloat(number) : parseInt(number, 10);
|
|
210
|
+
}
|
|
211
|
+
if (isNaN(result)) {
|
|
212
|
+
return 0;
|
|
213
|
+
}
|
|
214
|
+
return (_result2 = result) !== null && _result2 !== void 0 ? _result2 : 0;
|
|
215
|
+
}
|
|
197
216
|
|
|
198
217
|
var ERROR = 'ERROR';
|
|
199
218
|
var ERROR_DIV_ZERO = 'DIV/0';
|
|
@@ -285,7 +304,26 @@ function func$2(first) {
|
|
|
285
304
|
func$2.SYMBOL = SYMBOL$2;
|
|
286
305
|
|
|
287
306
|
var SYMBOL$3 = '=';
|
|
307
|
+
|
|
308
|
+
// export default function func(exp1, exp2) {
|
|
309
|
+
// console.log('zzzzz', exp1, exp2)
|
|
310
|
+
|
|
311
|
+
// return exp1 === exp2;
|
|
312
|
+
// }
|
|
313
|
+
|
|
288
314
|
function func$3(exp1, exp2) {
|
|
315
|
+
var isArray1 = Array.isArray(exp1);
|
|
316
|
+
var isArray2 = Array.isArray(exp2);
|
|
317
|
+
if (isArray1 && !isArray2) {
|
|
318
|
+
return exp1.map(function (item) {
|
|
319
|
+
return (item === null || item === void 0 ? void 0 : item[0]) === exp2;
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
if (!isArray1 && isArray2) {
|
|
323
|
+
return exp2.map(function (item) {
|
|
324
|
+
return (item === null || item === void 0 ? void 0 : item[0]) === exp1;
|
|
325
|
+
});
|
|
326
|
+
}
|
|
289
327
|
return exp1 === exp2;
|
|
290
328
|
}
|
|
291
329
|
func$3.SYMBOL = SYMBOL$3;
|
|
@@ -306,12 +344,19 @@ function func$4(symbol) {
|
|
|
306
344
|
return item;
|
|
307
345
|
}
|
|
308
346
|
});
|
|
309
|
-
var symbolParts = symbol.split(
|
|
347
|
+
var symbolParts = symbol.split(".");
|
|
310
348
|
var foundFormula = false;
|
|
311
349
|
var result;
|
|
312
350
|
if (symbolParts.length === 1) {
|
|
313
351
|
if (formulajs[symbolParts[0]]) {
|
|
314
352
|
foundFormula = true;
|
|
353
|
+
if (symbolParts[0] === "SUMPRODUCT") {
|
|
354
|
+
var _params2;
|
|
355
|
+
params = (_params2 = params) === null || _params2 === void 0 ? void 0 : _params2.map(function (item) {
|
|
356
|
+
var _item$flat;
|
|
357
|
+
return (item === null || item === void 0 ? void 0 : item.flat) ? (_item$flat = item.flat()) === null || _item$flat === void 0 ? void 0 : _item$flat.map(toNumberNotNaN) : toNumberNotNaN(item);
|
|
358
|
+
});
|
|
359
|
+
}
|
|
315
360
|
result = formulajs[symbolParts[0]].apply(formulajs, _toConsumableArray(params));
|
|
316
361
|
}
|
|
317
362
|
} else {
|
|
@@ -342,6 +387,18 @@ func$4.SYMBOL = SYMBOL$4;
|
|
|
342
387
|
|
|
343
388
|
var SYMBOL$5 = '>';
|
|
344
389
|
function func$5(exp1, exp2) {
|
|
390
|
+
var isArray1 = Array.isArray(exp1);
|
|
391
|
+
var isArray2 = Array.isArray(exp2);
|
|
392
|
+
if (isArray1 && !isArray2) {
|
|
393
|
+
return exp1.map(function (item) {
|
|
394
|
+
return (item === null || item === void 0 ? void 0 : item[0]) > exp2;
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
if (!isArray1 && isArray2) {
|
|
398
|
+
return exp2.map(function (item) {
|
|
399
|
+
return exp1 > (item === null || item === void 0 ? void 0 : item[0]);
|
|
400
|
+
});
|
|
401
|
+
}
|
|
345
402
|
return exp1 > exp2;
|
|
346
403
|
}
|
|
347
404
|
func$5.SYMBOL = SYMBOL$5;
|
|
@@ -354,6 +411,18 @@ func$6.SYMBOL = SYMBOL$6;
|
|
|
354
411
|
|
|
355
412
|
var SYMBOL$7 = '<';
|
|
356
413
|
function func$7(exp1, exp2) {
|
|
414
|
+
var isArray1 = Array.isArray(exp1);
|
|
415
|
+
var isArray2 = Array.isArray(exp2);
|
|
416
|
+
if (isArray1 && !isArray2) {
|
|
417
|
+
return exp1.map(function (item) {
|
|
418
|
+
return (item === null || item === void 0 ? void 0 : item[0]) < exp2;
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
if (!isArray1 && isArray2) {
|
|
422
|
+
return exp2.map(function (item) {
|
|
423
|
+
return exp1 < (item === null || item === void 0 ? void 0 : item[0]);
|
|
424
|
+
});
|
|
425
|
+
}
|
|
357
426
|
return exp1 < exp2;
|
|
358
427
|
}
|
|
359
428
|
func$7.SYMBOL = SYMBOL$7;
|
|
@@ -379,11 +448,40 @@ function func$9(first) {
|
|
|
379
448
|
}
|
|
380
449
|
func$9.SYMBOL = SYMBOL$9;
|
|
381
450
|
|
|
382
|
-
var SYMBOL$a =
|
|
451
|
+
var SYMBOL$a = "*";
|
|
452
|
+
|
|
453
|
+
// export default function func(first, ...rest) {
|
|
454
|
+
// console.log('first',first, rest)
|
|
455
|
+
// const result = rest.reduce((acc, value) => acc * toNumber(value), toNumber(first));
|
|
456
|
+
|
|
457
|
+
// if (isNaN(result)) {
|
|
458
|
+
// throw Error(ERROR_VALUE);
|
|
459
|
+
// }
|
|
460
|
+
|
|
461
|
+
// return result;
|
|
462
|
+
// }
|
|
463
|
+
|
|
383
464
|
function func$a(first) {
|
|
384
465
|
for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
385
466
|
rest[_key - 1] = arguments[_key];
|
|
386
467
|
}
|
|
468
|
+
var isArray1 = Array.isArray(first);
|
|
469
|
+
debugger;
|
|
470
|
+
if (isArray1) {
|
|
471
|
+
var dd = first === null || first === void 0 ? void 0 : first.map(function (item, index) {
|
|
472
|
+
var _list = rest.map(function (rItem) {
|
|
473
|
+
return Array.isArray(rItem) ? rItem[index] : toNumber(rItem);
|
|
474
|
+
});
|
|
475
|
+
var v = _list.reduce(function (acc, value) {
|
|
476
|
+
return acc * toNumber(value);
|
|
477
|
+
}, toNumber(item));
|
|
478
|
+
if (isNaN(v)) {
|
|
479
|
+
throw Error(ERROR_VALUE);
|
|
480
|
+
}
|
|
481
|
+
return v;
|
|
482
|
+
});
|
|
483
|
+
return dd;
|
|
484
|
+
}
|
|
387
485
|
var result = rest.reduce(function (acc, value) {
|
|
388
486
|
return acc * toNumber(value);
|
|
389
487
|
}, toNumber(first));
|
|
@@ -1443,6 +1541,7 @@ var parser = {
|
|
|
1443
1541
|
}
|
|
1444
1542
|
r = _this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
|
|
1445
1543
|
if (typeof r !== "undefined") {
|
|
1544
|
+
console.log('r', r);
|
|
1446
1545
|
return {
|
|
1447
1546
|
v: r
|
|
1448
1547
|
};
|
package/dist/index.js
CHANGED
|
@@ -205,6 +205,9 @@ function _nonIterableRest() {
|
|
|
205
205
|
function toNumber(number) {
|
|
206
206
|
var _result;
|
|
207
207
|
var result;
|
|
208
|
+
if (number === true) {
|
|
209
|
+
return 1;
|
|
210
|
+
}
|
|
208
211
|
if (typeof number === 'number') {
|
|
209
212
|
result = number;
|
|
210
213
|
} else if (typeof number === 'string') {
|
|
@@ -222,6 +225,22 @@ function toNumber(number) {
|
|
|
222
225
|
function invertNumber(number) {
|
|
223
226
|
return -1 * toNumber(number);
|
|
224
227
|
}
|
|
228
|
+
function toNumberNotNaN(number) {
|
|
229
|
+
var _result2;
|
|
230
|
+
var result;
|
|
231
|
+
if (number === true) {
|
|
232
|
+
return 1;
|
|
233
|
+
}
|
|
234
|
+
if (typeof number === 'number') {
|
|
235
|
+
result = number;
|
|
236
|
+
} else if (typeof number === 'string') {
|
|
237
|
+
result = number.indexOf('.') > -1 ? parseFloat(number) : parseInt(number, 10);
|
|
238
|
+
}
|
|
239
|
+
if (isNaN(result)) {
|
|
240
|
+
return 0;
|
|
241
|
+
}
|
|
242
|
+
return (_result2 = result) !== null && _result2 !== void 0 ? _result2 : 0;
|
|
243
|
+
}
|
|
225
244
|
|
|
226
245
|
var ERROR = 'ERROR';
|
|
227
246
|
var ERROR_DIV_ZERO = 'DIV/0';
|
|
@@ -313,7 +332,26 @@ function func$2(first) {
|
|
|
313
332
|
func$2.SYMBOL = SYMBOL$2;
|
|
314
333
|
|
|
315
334
|
var SYMBOL$3 = '=';
|
|
335
|
+
|
|
336
|
+
// export default function func(exp1, exp2) {
|
|
337
|
+
// console.log('zzzzz', exp1, exp2)
|
|
338
|
+
|
|
339
|
+
// return exp1 === exp2;
|
|
340
|
+
// }
|
|
341
|
+
|
|
316
342
|
function func$3(exp1, exp2) {
|
|
343
|
+
var isArray1 = Array.isArray(exp1);
|
|
344
|
+
var isArray2 = Array.isArray(exp2);
|
|
345
|
+
if (isArray1 && !isArray2) {
|
|
346
|
+
return exp1.map(function (item) {
|
|
347
|
+
return (item === null || item === void 0 ? void 0 : item[0]) === exp2;
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
if (!isArray1 && isArray2) {
|
|
351
|
+
return exp2.map(function (item) {
|
|
352
|
+
return (item === null || item === void 0 ? void 0 : item[0]) === exp1;
|
|
353
|
+
});
|
|
354
|
+
}
|
|
317
355
|
return exp1 === exp2;
|
|
318
356
|
}
|
|
319
357
|
func$3.SYMBOL = SYMBOL$3;
|
|
@@ -334,12 +372,19 @@ function func$4(symbol) {
|
|
|
334
372
|
return item;
|
|
335
373
|
}
|
|
336
374
|
});
|
|
337
|
-
var symbolParts = symbol.split(
|
|
375
|
+
var symbolParts = symbol.split(".");
|
|
338
376
|
var foundFormula = false;
|
|
339
377
|
var result;
|
|
340
378
|
if (symbolParts.length === 1) {
|
|
341
379
|
if (formulajs__namespace[symbolParts[0]]) {
|
|
342
380
|
foundFormula = true;
|
|
381
|
+
if (symbolParts[0] === "SUMPRODUCT") {
|
|
382
|
+
var _params2;
|
|
383
|
+
params = (_params2 = params) === null || _params2 === void 0 ? void 0 : _params2.map(function (item) {
|
|
384
|
+
var _item$flat;
|
|
385
|
+
return (item === null || item === void 0 ? void 0 : item.flat) ? (_item$flat = item.flat()) === null || _item$flat === void 0 ? void 0 : _item$flat.map(toNumberNotNaN) : toNumberNotNaN(item);
|
|
386
|
+
});
|
|
387
|
+
}
|
|
343
388
|
result = formulajs__namespace[symbolParts[0]].apply(formulajs__namespace, _toConsumableArray(params));
|
|
344
389
|
}
|
|
345
390
|
} else {
|
|
@@ -370,6 +415,18 @@ func$4.SYMBOL = SYMBOL$4;
|
|
|
370
415
|
|
|
371
416
|
var SYMBOL$5 = '>';
|
|
372
417
|
function func$5(exp1, exp2) {
|
|
418
|
+
var isArray1 = Array.isArray(exp1);
|
|
419
|
+
var isArray2 = Array.isArray(exp2);
|
|
420
|
+
if (isArray1 && !isArray2) {
|
|
421
|
+
return exp1.map(function (item) {
|
|
422
|
+
return (item === null || item === void 0 ? void 0 : item[0]) > exp2;
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
if (!isArray1 && isArray2) {
|
|
426
|
+
return exp2.map(function (item) {
|
|
427
|
+
return exp1 > (item === null || item === void 0 ? void 0 : item[0]);
|
|
428
|
+
});
|
|
429
|
+
}
|
|
373
430
|
return exp1 > exp2;
|
|
374
431
|
}
|
|
375
432
|
func$5.SYMBOL = SYMBOL$5;
|
|
@@ -382,6 +439,18 @@ func$6.SYMBOL = SYMBOL$6;
|
|
|
382
439
|
|
|
383
440
|
var SYMBOL$7 = '<';
|
|
384
441
|
function func$7(exp1, exp2) {
|
|
442
|
+
var isArray1 = Array.isArray(exp1);
|
|
443
|
+
var isArray2 = Array.isArray(exp2);
|
|
444
|
+
if (isArray1 && !isArray2) {
|
|
445
|
+
return exp1.map(function (item) {
|
|
446
|
+
return (item === null || item === void 0 ? void 0 : item[0]) < exp2;
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
if (!isArray1 && isArray2) {
|
|
450
|
+
return exp2.map(function (item) {
|
|
451
|
+
return exp1 < (item === null || item === void 0 ? void 0 : item[0]);
|
|
452
|
+
});
|
|
453
|
+
}
|
|
385
454
|
return exp1 < exp2;
|
|
386
455
|
}
|
|
387
456
|
func$7.SYMBOL = SYMBOL$7;
|
|
@@ -407,11 +476,40 @@ function func$9(first) {
|
|
|
407
476
|
}
|
|
408
477
|
func$9.SYMBOL = SYMBOL$9;
|
|
409
478
|
|
|
410
|
-
var SYMBOL$a =
|
|
479
|
+
var SYMBOL$a = "*";
|
|
480
|
+
|
|
481
|
+
// export default function func(first, ...rest) {
|
|
482
|
+
// console.log('first',first, rest)
|
|
483
|
+
// const result = rest.reduce((acc, value) => acc * toNumber(value), toNumber(first));
|
|
484
|
+
|
|
485
|
+
// if (isNaN(result)) {
|
|
486
|
+
// throw Error(ERROR_VALUE);
|
|
487
|
+
// }
|
|
488
|
+
|
|
489
|
+
// return result;
|
|
490
|
+
// }
|
|
491
|
+
|
|
411
492
|
function func$a(first) {
|
|
412
493
|
for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
413
494
|
rest[_key - 1] = arguments[_key];
|
|
414
495
|
}
|
|
496
|
+
var isArray1 = Array.isArray(first);
|
|
497
|
+
debugger;
|
|
498
|
+
if (isArray1) {
|
|
499
|
+
var dd = first === null || first === void 0 ? void 0 : first.map(function (item, index) {
|
|
500
|
+
var _list = rest.map(function (rItem) {
|
|
501
|
+
return Array.isArray(rItem) ? rItem[index] : toNumber(rItem);
|
|
502
|
+
});
|
|
503
|
+
var v = _list.reduce(function (acc, value) {
|
|
504
|
+
return acc * toNumber(value);
|
|
505
|
+
}, toNumber(item));
|
|
506
|
+
if (isNaN(v)) {
|
|
507
|
+
throw Error(ERROR_VALUE);
|
|
508
|
+
}
|
|
509
|
+
return v;
|
|
510
|
+
});
|
|
511
|
+
return dd;
|
|
512
|
+
}
|
|
415
513
|
var result = rest.reduce(function (acc, value) {
|
|
416
514
|
return acc * toNumber(value);
|
|
417
515
|
}, toNumber(first));
|
|
@@ -1471,6 +1569,7 @@ var parser = {
|
|
|
1471
1569
|
}
|
|
1472
1570
|
r = _this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
|
|
1473
1571
|
if (typeof r !== "undefined") {
|
|
1572
|
+
console.log('r', r);
|
|
1474
1573
|
return {
|
|
1475
1574
|
v: r
|
|
1476
1575
|
};
|