@leankylin-sheet/formula-parser 4.0.44 → 4.0.46
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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function multiplyNumber(num1?: number, num2?: number): number;
|
package/dist/index.esm.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Emitter from 'tiny-emitter';
|
|
2
2
|
import * as formulajs from '@formulajs/formulajs';
|
|
3
3
|
import { utils } from '@formulajs/formulajs';
|
|
4
|
+
import { Decimal } from 'decimal.js';
|
|
4
5
|
|
|
5
6
|
function _callSuper(t, o, e) {
|
|
6
7
|
return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));
|
|
@@ -350,13 +351,7 @@ function func$4(symbol) {
|
|
|
350
351
|
if (symbolParts.length === 1) {
|
|
351
352
|
if (formulajs[symbolParts[0]]) {
|
|
352
353
|
foundFormula = true;
|
|
353
|
-
|
|
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
|
-
}
|
|
354
|
+
params = tsParams(symbolParts[0], params);
|
|
360
355
|
result = formulajs[symbolParts[0]].apply(formulajs, _toConsumableArray(params));
|
|
361
356
|
}
|
|
362
357
|
} else {
|
|
@@ -384,6 +379,26 @@ function func$4(symbol) {
|
|
|
384
379
|
}
|
|
385
380
|
func$4.isFactory = true;
|
|
386
381
|
func$4.SYMBOL = SYMBOL$4;
|
|
382
|
+
function tsParams(fnName, params) {
|
|
383
|
+
if (fnName === "SUMPRODUCT") {
|
|
384
|
+
var _params2;
|
|
385
|
+
params = (_params2 = params) === null || _params2 === void 0 ? void 0 : _params2.map(function (item) {
|
|
386
|
+
var _item$flat;
|
|
387
|
+
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);
|
|
388
|
+
});
|
|
389
|
+
} else if (fnName === "SUMIF") {
|
|
390
|
+
var _params3;
|
|
391
|
+
params = (_params3 = params) === null || _params3 === void 0 ? void 0 : _params3.map(function (item, index) {
|
|
392
|
+
if (index === 2 && Array.isArray(item)) {
|
|
393
|
+
return item === null || item === void 0 ? void 0 : item.map(function (cell) {
|
|
394
|
+
return [null, undefined, ""].includes(cell === null || cell === void 0 ? void 0 : cell[0]) ? [0] : cell;
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
return item;
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
return params;
|
|
401
|
+
}
|
|
387
402
|
|
|
388
403
|
var SYMBOL$5 = '>';
|
|
389
404
|
function func$5(exp1, exp2) {
|
|
@@ -472,6 +487,19 @@ function func$9(first) {
|
|
|
472
487
|
}
|
|
473
488
|
func$9.SYMBOL = SYMBOL$9;
|
|
474
489
|
|
|
490
|
+
/**
|
|
491
|
+
* 解决js处理精度问题
|
|
492
|
+
* 0.3 * 0.1 = 0.03
|
|
493
|
+
* @param num1
|
|
494
|
+
* @param num2
|
|
495
|
+
* @returns
|
|
496
|
+
*/
|
|
497
|
+
var multiplyNumber = function multiplyNumber() {
|
|
498
|
+
var num1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
499
|
+
var num2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
500
|
+
return new Decimal(num1).mul(num2).toNumber();
|
|
501
|
+
};
|
|
502
|
+
|
|
475
503
|
var SYMBOL$a = "*";
|
|
476
504
|
|
|
477
505
|
// export default function func(first, ...rest) {
|
|
@@ -496,7 +524,7 @@ function func$a(first) {
|
|
|
496
524
|
return Array.isArray(rItem) ? rItem[index] : toNumber(rItem);
|
|
497
525
|
});
|
|
498
526
|
var v = _list.reduce(function (acc, value) {
|
|
499
|
-
return acc
|
|
527
|
+
return multiplyNumber(acc, toNumber(value));
|
|
500
528
|
}, toNumber(item));
|
|
501
529
|
if (isNaN(v)) {
|
|
502
530
|
throw Error(ERROR_VALUE);
|
|
@@ -506,7 +534,7 @@ function func$a(first) {
|
|
|
506
534
|
return dd;
|
|
507
535
|
}
|
|
508
536
|
var result = rest.reduce(function (acc, value) {
|
|
509
|
-
return acc
|
|
537
|
+
return multiplyNumber(acc, toNumber(value));
|
|
510
538
|
}, toNumber(first));
|
|
511
539
|
if (isNaN(result)) {
|
|
512
540
|
throw Error(ERROR_VALUE);
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var Emitter = require('tiny-emitter');
|
|
6
6
|
var formulajs = require('@formulajs/formulajs');
|
|
7
|
+
var decimal_js = require('decimal.js');
|
|
7
8
|
|
|
8
9
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
10
|
|
|
@@ -378,13 +379,7 @@ function func$4(symbol) {
|
|
|
378
379
|
if (symbolParts.length === 1) {
|
|
379
380
|
if (formulajs__namespace[symbolParts[0]]) {
|
|
380
381
|
foundFormula = true;
|
|
381
|
-
|
|
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
|
-
}
|
|
382
|
+
params = tsParams(symbolParts[0], params);
|
|
388
383
|
result = formulajs__namespace[symbolParts[0]].apply(formulajs__namespace, _toConsumableArray(params));
|
|
389
384
|
}
|
|
390
385
|
} else {
|
|
@@ -412,6 +407,26 @@ function func$4(symbol) {
|
|
|
412
407
|
}
|
|
413
408
|
func$4.isFactory = true;
|
|
414
409
|
func$4.SYMBOL = SYMBOL$4;
|
|
410
|
+
function tsParams(fnName, params) {
|
|
411
|
+
if (fnName === "SUMPRODUCT") {
|
|
412
|
+
var _params2;
|
|
413
|
+
params = (_params2 = params) === null || _params2 === void 0 ? void 0 : _params2.map(function (item) {
|
|
414
|
+
var _item$flat;
|
|
415
|
+
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);
|
|
416
|
+
});
|
|
417
|
+
} else if (fnName === "SUMIF") {
|
|
418
|
+
var _params3;
|
|
419
|
+
params = (_params3 = params) === null || _params3 === void 0 ? void 0 : _params3.map(function (item, index) {
|
|
420
|
+
if (index === 2 && Array.isArray(item)) {
|
|
421
|
+
return item === null || item === void 0 ? void 0 : item.map(function (cell) {
|
|
422
|
+
return [null, undefined, ""].includes(cell === null || cell === void 0 ? void 0 : cell[0]) ? [0] : cell;
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
return item;
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
return params;
|
|
429
|
+
}
|
|
415
430
|
|
|
416
431
|
var SYMBOL$5 = '>';
|
|
417
432
|
function func$5(exp1, exp2) {
|
|
@@ -500,6 +515,19 @@ function func$9(first) {
|
|
|
500
515
|
}
|
|
501
516
|
func$9.SYMBOL = SYMBOL$9;
|
|
502
517
|
|
|
518
|
+
/**
|
|
519
|
+
* 解决js处理精度问题
|
|
520
|
+
* 0.3 * 0.1 = 0.03
|
|
521
|
+
* @param num1
|
|
522
|
+
* @param num2
|
|
523
|
+
* @returns
|
|
524
|
+
*/
|
|
525
|
+
var multiplyNumber = function multiplyNumber() {
|
|
526
|
+
var num1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
527
|
+
var num2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
528
|
+
return new decimal_js.Decimal(num1).mul(num2).toNumber();
|
|
529
|
+
};
|
|
530
|
+
|
|
503
531
|
var SYMBOL$a = "*";
|
|
504
532
|
|
|
505
533
|
// export default function func(first, ...rest) {
|
|
@@ -524,7 +552,7 @@ function func$a(first) {
|
|
|
524
552
|
return Array.isArray(rItem) ? rItem[index] : toNumber(rItem);
|
|
525
553
|
});
|
|
526
554
|
var v = _list.reduce(function (acc, value) {
|
|
527
|
-
return acc
|
|
555
|
+
return multiplyNumber(acc, toNumber(value));
|
|
528
556
|
}, toNumber(item));
|
|
529
557
|
if (isNaN(v)) {
|
|
530
558
|
throw Error(ERROR_VALUE);
|
|
@@ -534,7 +562,7 @@ function func$a(first) {
|
|
|
534
562
|
return dd;
|
|
535
563
|
}
|
|
536
564
|
var result = rest.reduce(function (acc, value) {
|
|
537
|
-
return acc
|
|
565
|
+
return multiplyNumber(acc, toNumber(value));
|
|
538
566
|
}, toNumber(first));
|
|
539
567
|
if (isNaN(result)) {
|
|
540
568
|
throw Error(ERROR_VALUE);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leankylin-sheet/formula-parser",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.46",
|
|
4
4
|
"description": "Formula parser",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@formulajs/formulajs": "^4.5.6",
|
|
40
|
+
"decimal.js": "^10.6.0",
|
|
40
41
|
"tiny-emitter": "^2.1.0"
|
|
41
42
|
},
|
|
42
43
|
"jest": {
|