@leankylin-sheet/formula-parser 4.0.42 → 4.0.44

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,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,24 +387,72 @@ 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;
348
405
 
349
406
  var SYMBOL$6 = '>=';
350
407
  function func$6(exp1, exp2) {
408
+ var isArray1 = Array.isArray(exp1);
409
+ var isArray2 = Array.isArray(exp2);
410
+ if (isArray1 && !isArray2) {
411
+ return exp1.map(function (item) {
412
+ return (item === null || item === void 0 ? void 0 : item[0]) >= exp2;
413
+ });
414
+ }
415
+ if (!isArray1 && isArray2) {
416
+ return exp2.map(function (item) {
417
+ return exp1 >= (item === null || item === void 0 ? void 0 : item[0]);
418
+ });
419
+ }
351
420
  return exp1 >= exp2;
352
421
  }
353
422
  func$6.SYMBOL = SYMBOL$6;
354
423
 
355
424
  var SYMBOL$7 = '<';
356
425
  function func$7(exp1, exp2) {
426
+ var isArray1 = Array.isArray(exp1);
427
+ var isArray2 = Array.isArray(exp2);
428
+ if (isArray1 && !isArray2) {
429
+ return exp1.map(function (item) {
430
+ return (item === null || item === void 0 ? void 0 : item[0]) < exp2;
431
+ });
432
+ }
433
+ if (!isArray1 && isArray2) {
434
+ return exp2.map(function (item) {
435
+ return exp1 < (item === null || item === void 0 ? void 0 : item[0]);
436
+ });
437
+ }
357
438
  return exp1 < exp2;
358
439
  }
359
440
  func$7.SYMBOL = SYMBOL$7;
360
441
 
361
442
  var SYMBOL$8 = '<=';
362
443
  function func$8(exp1, exp2) {
444
+ var isArray1 = Array.isArray(exp1);
445
+ var isArray2 = Array.isArray(exp2);
446
+ if (isArray1 && !isArray2) {
447
+ return exp1.map(function (item) {
448
+ return (item === null || item === void 0 ? void 0 : item[0]) <= exp2;
449
+ });
450
+ }
451
+ if (!isArray1 && isArray2) {
452
+ return exp2.map(function (item) {
453
+ return exp1 <= (item === null || item === void 0 ? void 0 : item[0]);
454
+ });
455
+ }
363
456
  return exp1 <= exp2;
364
457
  }
365
458
  func$8.SYMBOL = SYMBOL$8;
@@ -379,11 +472,39 @@ function func$9(first) {
379
472
  }
380
473
  func$9.SYMBOL = SYMBOL$9;
381
474
 
382
- var SYMBOL$a = '*';
475
+ var SYMBOL$a = "*";
476
+
477
+ // export default function func(first, ...rest) {
478
+ // console.log('first',first, rest)
479
+ // const result = rest.reduce((acc, value) => acc * toNumber(value), toNumber(first));
480
+
481
+ // if (isNaN(result)) {
482
+ // throw Error(ERROR_VALUE);
483
+ // }
484
+
485
+ // return result;
486
+ // }
487
+
383
488
  function func$a(first) {
384
489
  for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
385
490
  rest[_key - 1] = arguments[_key];
386
491
  }
492
+ var isArray1 = Array.isArray(first);
493
+ if (isArray1) {
494
+ var dd = first === null || first === void 0 ? void 0 : first.map(function (item, index) {
495
+ var _list = rest.map(function (rItem) {
496
+ return Array.isArray(rItem) ? rItem[index] : toNumber(rItem);
497
+ });
498
+ var v = _list.reduce(function (acc, value) {
499
+ return acc * toNumber(value);
500
+ }, toNumber(item));
501
+ if (isNaN(v)) {
502
+ throw Error(ERROR_VALUE);
503
+ }
504
+ return v;
505
+ });
506
+ return dd;
507
+ }
387
508
  var result = rest.reduce(function (acc, value) {
388
509
  return acc * toNumber(value);
389
510
  }, toNumber(first));
@@ -1443,6 +1564,7 @@ var parser = {
1443
1564
  }
1444
1565
  r = _this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
1445
1566
  if (typeof r !== "undefined") {
1567
+ console.log('r', r);
1446
1568
  return {
1447
1569
  v: r
1448
1570
  };
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,24 +415,72 @@ 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;
376
433
 
377
434
  var SYMBOL$6 = '>=';
378
435
  function func$6(exp1, exp2) {
436
+ var isArray1 = Array.isArray(exp1);
437
+ var isArray2 = Array.isArray(exp2);
438
+ if (isArray1 && !isArray2) {
439
+ return exp1.map(function (item) {
440
+ return (item === null || item === void 0 ? void 0 : item[0]) >= exp2;
441
+ });
442
+ }
443
+ if (!isArray1 && isArray2) {
444
+ return exp2.map(function (item) {
445
+ return exp1 >= (item === null || item === void 0 ? void 0 : item[0]);
446
+ });
447
+ }
379
448
  return exp1 >= exp2;
380
449
  }
381
450
  func$6.SYMBOL = SYMBOL$6;
382
451
 
383
452
  var SYMBOL$7 = '<';
384
453
  function func$7(exp1, exp2) {
454
+ var isArray1 = Array.isArray(exp1);
455
+ var isArray2 = Array.isArray(exp2);
456
+ if (isArray1 && !isArray2) {
457
+ return exp1.map(function (item) {
458
+ return (item === null || item === void 0 ? void 0 : item[0]) < exp2;
459
+ });
460
+ }
461
+ if (!isArray1 && isArray2) {
462
+ return exp2.map(function (item) {
463
+ return exp1 < (item === null || item === void 0 ? void 0 : item[0]);
464
+ });
465
+ }
385
466
  return exp1 < exp2;
386
467
  }
387
468
  func$7.SYMBOL = SYMBOL$7;
388
469
 
389
470
  var SYMBOL$8 = '<=';
390
471
  function func$8(exp1, exp2) {
472
+ var isArray1 = Array.isArray(exp1);
473
+ var isArray2 = Array.isArray(exp2);
474
+ if (isArray1 && !isArray2) {
475
+ return exp1.map(function (item) {
476
+ return (item === null || item === void 0 ? void 0 : item[0]) <= exp2;
477
+ });
478
+ }
479
+ if (!isArray1 && isArray2) {
480
+ return exp2.map(function (item) {
481
+ return exp1 <= (item === null || item === void 0 ? void 0 : item[0]);
482
+ });
483
+ }
391
484
  return exp1 <= exp2;
392
485
  }
393
486
  func$8.SYMBOL = SYMBOL$8;
@@ -407,11 +500,39 @@ function func$9(first) {
407
500
  }
408
501
  func$9.SYMBOL = SYMBOL$9;
409
502
 
410
- var SYMBOL$a = '*';
503
+ var SYMBOL$a = "*";
504
+
505
+ // export default function func(first, ...rest) {
506
+ // console.log('first',first, rest)
507
+ // const result = rest.reduce((acc, value) => acc * toNumber(value), toNumber(first));
508
+
509
+ // if (isNaN(result)) {
510
+ // throw Error(ERROR_VALUE);
511
+ // }
512
+
513
+ // return result;
514
+ // }
515
+
411
516
  function func$a(first) {
412
517
  for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
413
518
  rest[_key - 1] = arguments[_key];
414
519
  }
520
+ var isArray1 = Array.isArray(first);
521
+ if (isArray1) {
522
+ var dd = first === null || first === void 0 ? void 0 : first.map(function (item, index) {
523
+ var _list = rest.map(function (rItem) {
524
+ return Array.isArray(rItem) ? rItem[index] : toNumber(rItem);
525
+ });
526
+ var v = _list.reduce(function (acc, value) {
527
+ return acc * toNumber(value);
528
+ }, toNumber(item));
529
+ if (isNaN(v)) {
530
+ throw Error(ERROR_VALUE);
531
+ }
532
+ return v;
533
+ });
534
+ return dd;
535
+ }
415
536
  var result = rest.reduce(function (acc, value) {
416
537
  return acc * toNumber(value);
417
538
  }, toNumber(first));
@@ -1471,6 +1592,7 @@ var parser = {
1471
1592
  }
1472
1593
  r = _this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
1473
1594
  if (typeof r !== "undefined") {
1595
+ console.log('r', r);
1474
1596
  return {
1475
1597
  v: r
1476
1598
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leankylin-sheet/formula-parser",
3
- "version": "4.0.42",
3
+ "version": "4.0.44",
4
4
  "description": "Formula parser",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",