amis-formula 2.0.2 → 2.2.0
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/lib/doc.js +1 -1
- package/lib/doc.md +1 -1
- package/lib/evalutor.d.ts +5 -5
- package/lib/index.js +27 -27
- package/package.json +7 -7
package/lib/doc.js
CHANGED
|
@@ -1486,7 +1486,7 @@ exports.doc = [
|
|
|
1486
1486
|
},
|
|
1487
1487
|
{
|
|
1488
1488
|
name: "JOIN",
|
|
1489
|
-
description: "数组转成字符串\n\n示例:\n\nJOIN(['a', 'b', 'c'], '
|
|
1489
|
+
description: "数组转成字符串\n\n示例:\n\nJOIN(['a', 'b', 'c'], '=') 得到 'a=b=c'",
|
|
1490
1490
|
example: "JOIN(arr, string)",
|
|
1491
1491
|
params: [
|
|
1492
1492
|
{
|
package/lib/doc.md
CHANGED
package/lib/evalutor.d.ts
CHANGED
|
@@ -76,7 +76,7 @@ export declare class Evaluator {
|
|
|
76
76
|
add(ast: {
|
|
77
77
|
left: any;
|
|
78
78
|
right: any;
|
|
79
|
-
}):
|
|
79
|
+
}): any;
|
|
80
80
|
minus(ast: {
|
|
81
81
|
left: any;
|
|
82
82
|
right: any;
|
|
@@ -330,7 +330,7 @@ export declare class Evaluator {
|
|
|
330
330
|
*
|
|
331
331
|
* @returns {number} 传入数值四舍五入后的结果
|
|
332
332
|
*/
|
|
333
|
-
fnROUND(a: number, b
|
|
333
|
+
fnROUND(a: number, b?: number): number;
|
|
334
334
|
/**
|
|
335
335
|
* 将数字向下取整到指定的位数,可以设置小数位。
|
|
336
336
|
*
|
|
@@ -341,7 +341,7 @@ export declare class Evaluator {
|
|
|
341
341
|
*
|
|
342
342
|
* @returns {number} 传入数值向下取整后的结果
|
|
343
343
|
*/
|
|
344
|
-
fnFLOOR(a: number, b
|
|
344
|
+
fnFLOOR(a: number, b?: number): number;
|
|
345
345
|
/**
|
|
346
346
|
* 将数字向上取整到指定的位数,可以设置小数位。
|
|
347
347
|
*
|
|
@@ -352,7 +352,7 @@ export declare class Evaluator {
|
|
|
352
352
|
*
|
|
353
353
|
* @returns {number} 传入数值向上取整后的结果
|
|
354
354
|
*/
|
|
355
|
-
fnCEIL(a: number, b
|
|
355
|
+
fnCEIL(a: number, b?: number): number;
|
|
356
356
|
/**
|
|
357
357
|
* 开平方,参数 number 为非负数
|
|
358
358
|
*
|
|
@@ -1028,7 +1028,7 @@ export declare class Evaluator {
|
|
|
1028
1028
|
*
|
|
1029
1029
|
* 示例:
|
|
1030
1030
|
*
|
|
1031
|
-
* JOIN(['a', 'b', 'c'], '
|
|
1031
|
+
* JOIN(['a', 'b', 'c'], '=') 得到 'a=b=c'
|
|
1032
1032
|
*
|
|
1033
1033
|
* @param {Array<any>} arr 数组
|
|
1034
1034
|
* @param { String} separator 分隔符
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* amis-formula v2.0
|
|
2
|
+
* amis-formula v2.2.0
|
|
3
3
|
* Copyright 2021-2022 fex
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -205,6 +205,10 @@ var Evaluator = /** @class */ (function () {
|
|
|
205
205
|
Evaluator.prototype.add = function (ast) {
|
|
206
206
|
var left = this.evalute(ast.left);
|
|
207
207
|
var right = this.evalute(ast.right);
|
|
208
|
+
// 如果有一个不是数字就变成字符串拼接
|
|
209
|
+
if (isNaN(left) || isNaN(right)) {
|
|
210
|
+
return left + right;
|
|
211
|
+
}
|
|
208
212
|
return stripNumber(this.formatNumber(left) + this.formatNumber(right));
|
|
209
213
|
};
|
|
210
214
|
Evaluator.prototype.minus = function (ast) {
|
|
@@ -532,10 +536,7 @@ var Evaluator = /** @class */ (function () {
|
|
|
532
536
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
533
537
|
args[_i] = arguments[_i];
|
|
534
538
|
}
|
|
535
|
-
var arr = args;
|
|
536
|
-
if (args.length === 1 && Array.isArray(args[0])) {
|
|
537
|
-
arr = args[0];
|
|
538
|
-
}
|
|
539
|
+
var arr = normalizeArgs(args);
|
|
539
540
|
return Math.max.apply(Math, arr.map(function (item) { return _this.formatNumber(item); }));
|
|
540
541
|
};
|
|
541
542
|
/**
|
|
@@ -553,10 +554,7 @@ var Evaluator = /** @class */ (function () {
|
|
|
553
554
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
554
555
|
args[_i] = arguments[_i];
|
|
555
556
|
}
|
|
556
|
-
var arr = args;
|
|
557
|
-
if (args.length === 1 && Array.isArray(args[0])) {
|
|
558
|
-
arr = args[0];
|
|
559
|
-
}
|
|
557
|
+
var arr = normalizeArgs(args);
|
|
560
558
|
return Math.min.apply(Math, arr.map(function (item) { return _this.formatNumber(item); }));
|
|
561
559
|
};
|
|
562
560
|
/**
|
|
@@ -574,10 +572,7 @@ var Evaluator = /** @class */ (function () {
|
|
|
574
572
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
575
573
|
args[_i] = arguments[_i];
|
|
576
574
|
}
|
|
577
|
-
var arr = args;
|
|
578
|
-
if (args.length === 1 && Array.isArray(args[0])) {
|
|
579
|
-
arr = args[0];
|
|
580
|
-
}
|
|
575
|
+
var arr = normalizeArgs(args);
|
|
581
576
|
return arr.reduce(function (sum, a) { return sum + _this.formatNumber(a) || 0; }, 0);
|
|
582
577
|
};
|
|
583
578
|
/**
|
|
@@ -627,6 +622,7 @@ var Evaluator = /** @class */ (function () {
|
|
|
627
622
|
* @returns {number} 传入数值四舍五入后的结果
|
|
628
623
|
*/
|
|
629
624
|
Evaluator.prototype.fnROUND = function (a, b) {
|
|
625
|
+
if (b === void 0) { b = 2; }
|
|
630
626
|
a = this.formatNumber(a);
|
|
631
627
|
b = this.formatNumber(b);
|
|
632
628
|
var bResult = Math.round(b);
|
|
@@ -647,6 +643,7 @@ var Evaluator = /** @class */ (function () {
|
|
|
647
643
|
* @returns {number} 传入数值向下取整后的结果
|
|
648
644
|
*/
|
|
649
645
|
Evaluator.prototype.fnFLOOR = function (a, b) {
|
|
646
|
+
if (b === void 0) { b = 2; }
|
|
650
647
|
a = this.formatNumber(a);
|
|
651
648
|
b = this.formatNumber(b);
|
|
652
649
|
var bResult = Math.round(b);
|
|
@@ -667,6 +664,7 @@ var Evaluator = /** @class */ (function () {
|
|
|
667
664
|
* @returns {number} 传入数值向上取整后的结果
|
|
668
665
|
*/
|
|
669
666
|
Evaluator.prototype.fnCEIL = function (a, b) {
|
|
667
|
+
if (b === void 0) { b = 2; }
|
|
670
668
|
a = this.formatNumber(a);
|
|
671
669
|
b = this.formatNumber(b);
|
|
672
670
|
var bResult = Math.round(b);
|
|
@@ -703,10 +701,7 @@ var Evaluator = /** @class */ (function () {
|
|
|
703
701
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
704
702
|
args[_i] = arguments[_i];
|
|
705
703
|
}
|
|
706
|
-
var arr = args;
|
|
707
|
-
if (args.length === 1 && Array.isArray(args[0])) {
|
|
708
|
-
arr = args[0];
|
|
709
|
-
}
|
|
704
|
+
var arr = normalizeArgs(args);
|
|
710
705
|
return (this.fnSUM.apply(this, arr.map(function (item) { return _this.formatNumber(item); })) / arr.length);
|
|
711
706
|
};
|
|
712
707
|
/**
|
|
@@ -727,10 +722,7 @@ var Evaluator = /** @class */ (function () {
|
|
|
727
722
|
if (args.length === 0) {
|
|
728
723
|
return null;
|
|
729
724
|
}
|
|
730
|
-
var arr = args;
|
|
731
|
-
if (args.length === 1 && Array.isArray(args[0])) {
|
|
732
|
-
arr = args[0];
|
|
733
|
-
}
|
|
725
|
+
var arr = normalizeArgs(args);
|
|
734
726
|
var nums = arr.map(function (item) { return _this.formatNumber(item); });
|
|
735
727
|
var sum = nums.reduce(function (sum, a) { return sum + a || 0; }, 0);
|
|
736
728
|
var mean = sum / nums.length;
|
|
@@ -1417,8 +1409,11 @@ var Evaluator = /** @class */ (function () {
|
|
|
1417
1409
|
.toDate();
|
|
1418
1410
|
};
|
|
1419
1411
|
Evaluator.prototype.normalizeDate = function (raw) {
|
|
1412
|
+
if (typeof raw === 'number' || !isNaN(raw)) {
|
|
1413
|
+
return new Date(Number(raw));
|
|
1414
|
+
}
|
|
1420
1415
|
if (typeof raw === 'string') {
|
|
1421
|
-
var formats = ['', 'YYYY-MM-DD HH:mm:ss'];
|
|
1416
|
+
var formats = ['', 'YYYY-MM-DD HH:mm:ss', 'X'];
|
|
1422
1417
|
while (formats.length) {
|
|
1423
1418
|
var format = formats.shift();
|
|
1424
1419
|
var date = moment__default["default"](raw, format);
|
|
@@ -1427,9 +1422,6 @@ var Evaluator = /** @class */ (function () {
|
|
|
1427
1422
|
}
|
|
1428
1423
|
}
|
|
1429
1424
|
}
|
|
1430
|
-
else if (typeof raw === 'number') {
|
|
1431
|
-
return new Date(raw);
|
|
1432
|
-
}
|
|
1433
1425
|
return raw;
|
|
1434
1426
|
};
|
|
1435
1427
|
/**
|
|
@@ -1712,7 +1704,7 @@ var Evaluator = /** @class */ (function () {
|
|
|
1712
1704
|
*
|
|
1713
1705
|
* 示例:
|
|
1714
1706
|
*
|
|
1715
|
-
* JOIN(['a', 'b', 'c'], '
|
|
1707
|
+
* JOIN(['a', 'b', 'c'], '=') 得到 'a=b=c'
|
|
1716
1708
|
*
|
|
1717
1709
|
* @param {Array<any>} arr 数组
|
|
1718
1710
|
* @param { String} separator 分隔符
|
|
@@ -1788,13 +1780,21 @@ function parseJson(str, defaultValue) {
|
|
|
1788
1780
|
}
|
|
1789
1781
|
}
|
|
1790
1782
|
function stripNumber(number) {
|
|
1791
|
-
if (typeof number === 'number') {
|
|
1783
|
+
if (typeof number === 'number' && !Number.isInteger(number)) {
|
|
1792
1784
|
return parseFloat(number.toPrecision(12));
|
|
1793
1785
|
}
|
|
1794
1786
|
else {
|
|
1795
1787
|
return number;
|
|
1796
1788
|
}
|
|
1797
1789
|
}
|
|
1790
|
+
// 如果只有一个成员,同时第一个成员为 args
|
|
1791
|
+
// 则把它展开,当成是多个参数,毕竟公式里面还不支持 ...args 语法,
|
|
1792
|
+
function normalizeArgs(args) {
|
|
1793
|
+
if (args.length === 1 && Array.isArray(args[0])) {
|
|
1794
|
+
args = args[0];
|
|
1795
|
+
}
|
|
1796
|
+
return args;
|
|
1797
|
+
}
|
|
1798
1798
|
function createObject(superProps, props, properties) {
|
|
1799
1799
|
var obj = superProps
|
|
1800
1800
|
? Object.create(superProps, tslib.__assign(tslib.__assign({}, properties), { __super: {
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "amis-formula",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "负责 amis 里面的表达式实现,内置公式,编辑器等",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "npm run clean-dist && NODE_ENV=production rollup -c && npm run genDoc && npm run declaration ",
|
|
9
|
-
"lib": "npm run clean-dist && NODE_ENV=
|
|
9
|
+
"lib": "npm run clean-dist && NODE_ENV=production IS_LIB=1 rollup -c",
|
|
10
10
|
"clean-dist": "rimraf lib/*",
|
|
11
11
|
"declaration": "tsc --project tsconfig-for-declaration.json --allowJs --declaration --emitDeclarationOnly --declarationDir ./lib --rootDir ./src",
|
|
12
12
|
"test": "jest",
|
|
@@ -35,14 +35,14 @@
|
|
|
35
35
|
"homepage": "https://github.com/aisuda/amis-tpl#readme",
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"lodash": "^4.17.15",
|
|
38
|
-
"moment": "^2.29.
|
|
38
|
+
"moment": "^2.29.4",
|
|
39
39
|
"tslib": "^2.3.1"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@rollup/plugin-commonjs": "^22.0.
|
|
42
|
+
"@rollup/plugin-commonjs": "^22.0.2",
|
|
43
43
|
"@rollup/plugin-json": "^4.1.0",
|
|
44
44
|
"@rollup/plugin-node-resolve": "^13.3.0",
|
|
45
|
-
"@rollup/plugin-typescript": "^8.3.
|
|
45
|
+
"@rollup/plugin-typescript": "^8.3.4",
|
|
46
46
|
"@types/doctrine": "0.0.5",
|
|
47
47
|
"@types/jest": "^28.1.0",
|
|
48
48
|
"@types/lodash": "^4.14.175",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"rollup": "^2.60.2",
|
|
57
57
|
"rollup-plugin-license": "^2.6.0",
|
|
58
58
|
"rollup-plugin-terser": "^7.0.2",
|
|
59
|
-
"sass": "^1.
|
|
59
|
+
"sass": "^1.54.0",
|
|
60
60
|
"sass-loader": "^12.1.0",
|
|
61
61
|
"style-loader": "^3.2.1",
|
|
62
62
|
"stylelint": "^13.0.0",
|
|
@@ -96,5 +96,5 @@
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
|
-
"gitHead": "
|
|
99
|
+
"gitHead": "8e92bd5c8ec412e9730ac424ab38d248aa122c8b"
|
|
100
100
|
}
|