@leankylin-sheet/formula-parser 4.0.41 → 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.
@@ -1,4 +1,4 @@
1
- declare function func(exp1: any, exp2: any): boolean;
1
+ declare function func(exp1: any, exp2: any): boolean | boolean[];
2
2
  declare namespace func {
3
3
  export { SYMBOL };
4
4
  }
@@ -1,4 +1,4 @@
1
- declare function func(exp1: any, exp2: any): boolean;
1
+ declare function func(exp1: any, exp2: any): boolean | boolean[];
2
2
  declare namespace func {
3
3
  export { SYMBOL };
4
4
  }
@@ -1,4 +1,4 @@
1
- declare function func(exp1: any, exp2: any): boolean;
1
+ declare function func(exp1: any, exp2: any): boolean | boolean[];
2
2
  declare namespace func {
3
3
  export { SYMBOL };
4
4
  }
@@ -1,2 +1,3 @@
1
1
  export function toNumber(number: string | number): any;
2
2
  export function invertNumber(number: number): number;
3
+ export function toNumberNotNaN(number: any): number;
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
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leankylin-sheet/formula-parser",
3
- "version": "4.0.41",
3
+ "version": "4.0.43",
4
4
  "description": "Formula parser",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",