amis-formula 2.2.0 → 2.3.1

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 CHANGED
@@ -65,7 +65,7 @@ exports.doc = [
65
65
  },
66
66
  {
67
67
  name: "XOR",
68
- description: "异或处理,两个表达式同时为「真」,或者同时为「假」,则结果返回为「真」",
68
+ description: "异或处理,多个表达式组中存在奇数个真时认为真。",
69
69
  example: "XOR(condition1, condition2)",
70
70
  params: [
71
71
  {
package/lib/doc.md CHANGED
@@ -57,7 +57,7 @@
57
57
 
58
58
  返回:`boolean`
59
59
 
60
- 异或处理,两个表达式同时为「真」,或者同时为「假」,则结果返回为「真」
60
+ 异或处理,多个表达式组中存在奇数个真时认为真。
61
61
 
62
62
  ### IFS
63
63
 
package/lib/evalutor.d.ts CHANGED
@@ -227,7 +227,7 @@ export declare class Evaluator {
227
227
  */
228
228
  fnOR(...condtions: Array<() => any>): boolean;
229
229
  /**
230
- * 异或处理,两个表达式同时为「真」,或者同时为「假」,则结果返回为「真」
230
+ * 异或处理,多个表达式组中存在奇数个真时认为真。
231
231
  *
232
232
  * @example XOR(condition1, condition2)
233
233
  * @param {expression} condition1 - 条件表达式1
@@ -236,7 +236,7 @@ export declare class Evaluator {
236
236
  *
237
237
  * @returns {boolean}
238
238
  */
239
- fnXOR(c1: () => any, c2: () => any): boolean;
239
+ fnXOR(...condtions: Array<() => any>): boolean;
240
240
  /**
241
241
  * 判断函数集合,相当于多个 else if 合并成一个。
242
242
  *
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-formula v2.2.0
2
+ * amis-formula v2.3.1
3
3
  * Copyright 2021-2022 fex
4
4
  */
5
5
 
@@ -96,7 +96,7 @@ var Evaluator = /** @class */ (function () {
96
96
  var filter = filters.shift();
97
97
  var fn = this.filters[filter.name];
98
98
  if (!fn) {
99
- throw new Error("filter `".concat(filter.name, "` not exits"));
99
+ throw new Error("filter `".concat(filter.name, "` not exists."));
100
100
  }
101
101
  context.filter = filter;
102
102
  input = fn.apply(context, [input].concat(filter.args.map(function (item) {
@@ -467,7 +467,7 @@ var Evaluator = /** @class */ (function () {
467
467
  return condtions.some(function (c) { return c(); });
468
468
  };
469
469
  /**
470
- * 异或处理,两个表达式同时为「真」,或者同时为「假」,则结果返回为「真」
470
+ * 异或处理,多个表达式组中存在奇数个真时认为真。
471
471
  *
472
472
  * @example XOR(condition1, condition2)
473
473
  * @param {expression} condition1 - 条件表达式1
@@ -476,8 +476,12 @@ var Evaluator = /** @class */ (function () {
476
476
  *
477
477
  * @returns {boolean}
478
478
  */
479
- Evaluator.prototype.fnXOR = function (c1, c2) {
480
- return !!c1() === !!c2();
479
+ Evaluator.prototype.fnXOR = function () {
480
+ var condtions = [];
481
+ for (var _i = 0; _i < arguments.length; _i++) {
482
+ condtions[_i] = arguments[_i];
483
+ }
484
+ return !!(condtions.filter(function (c) { return c(); }).length % 2);
481
485
  };
482
486
  /**
483
487
  * 判断函数集合,相当于多个 else if 合并成一个。
@@ -828,11 +832,16 @@ var Evaluator = /** @class */ (function () {
828
832
  * @returns {string} 数值中文大写字符
829
833
  */
830
834
  Evaluator.prototype.fnUPPERMONEY = function (n) {
835
+ var _a;
831
836
  n = this.formatNumber(n);
837
+ var maxLen = 14;
838
+ if (((_a = n.toString().split('.')[0]) === null || _a === void 0 ? void 0 : _a.length) > maxLen) {
839
+ return "\u6700\u5927\u6570\u989D\u53EA\u652F\u6301\u5230\u5146(\u65E2\u5C0F\u6570\u70B9\u524D".concat(maxLen, "\u4F4D)");
840
+ }
832
841
  var fraction = ['角', '分'];
833
842
  var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
834
843
  var unit = [
835
- ['元', '万', '亿'],
844
+ ['元', '万', '亿', '兆'],
836
845
  ['', '拾', '佰', '仟']
837
846
  ];
838
847
  var head = n < 0 ? '欠' : '';
@@ -1781,7 +1790,7 @@ function parseJson(str, defaultValue) {
1781
1790
  }
1782
1791
  function stripNumber(number) {
1783
1792
  if (typeof number === 'number' && !Number.isInteger(number)) {
1784
- return parseFloat(number.toPrecision(12));
1793
+ return parseFloat(number.toPrecision(16));
1785
1794
  }
1786
1795
  else {
1787
1796
  return number;
@@ -2051,7 +2060,8 @@ function lexer(input, options) {
2051
2060
  return tokenCache.length ? tokenCache.shift() : null;
2052
2061
  }
2053
2062
  function openScript() {
2054
- if (mainState === mainStates.Template) {
2063
+ if (mainState === mainStates.Template ||
2064
+ mainState === mainStates.EXPRESSION) {
2055
2065
  return null;
2056
2066
  }
2057
2067
  var ch = input[index];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amis-formula",
3
- "version": "2.2.0",
3
+ "version": "2.3.1",
4
4
  "description": "负责 amis 里面的表达式实现,内置公式,编辑器等",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -41,26 +41,26 @@
41
41
  "devDependencies": {
42
42
  "@rollup/plugin-commonjs": "^22.0.2",
43
43
  "@rollup/plugin-json": "^4.1.0",
44
- "@rollup/plugin-node-resolve": "^13.3.0",
44
+ "@rollup/plugin-node-resolve": "^14.1.0",
45
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",
49
49
  "doctrine": "^3.0.0",
50
- "jest": "^28.1.0",
50
+ "jest": "^29.0.3",
51
51
  "jest-canvas-mock": "^2.3.0",
52
- "jest-environment-jsdom": "^28.1.0",
52
+ "jest-environment-jsdom": "^29.0.3",
53
53
  "mini-css-extract-plugin": "^2.4.5",
54
54
  "moment-timezone": "^0.5.33",
55
55
  "rimraf": "^3.0.2",
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.54.0",
59
+ "sass": "^1.54.9",
60
60
  "sass-loader": "^12.1.0",
61
61
  "style-loader": "^3.2.1",
62
62
  "stylelint": "^13.0.0",
63
- "ts-jest": "^28.0.3",
63
+ "ts-jest": "^29.0.2",
64
64
  "ts-loader": "^9.2.3",
65
65
  "ts-node": "^10.4.0",
66
66
  "typescript": "^4.3.5"
@@ -77,7 +77,12 @@
77
77
  "js"
78
78
  ],
79
79
  "transform": {
80
- "\\.(ts|tsx)$": "ts-jest"
80
+ "\\.(ts|tsx)$": [
81
+ "ts-jest",
82
+ {
83
+ "diagnostics": false
84
+ }
85
+ ]
81
86
  },
82
87
  "setupFiles": [
83
88
  "jest-canvas-mock"
@@ -90,11 +95,10 @@
90
95
  "setupFilesAfterEnv": [
91
96
  "<rootDir>/__tests__/jest.setup.js"
92
97
  ],
93
- "globals": {
94
- "ts-jest": {
95
- "diagnostics": false
96
- }
98
+ "snapshotFormat": {
99
+ "escapeString": false,
100
+ "printBasicPrototype": false
97
101
  }
98
102
  },
99
- "gitHead": "8e92bd5c8ec412e9730ac424ab38d248aa122c8b"
103
+ "gitHead": "af69249562f9de5efbd47fd5553bcdb73b2eab4f"
100
104
  }