Refactor evalBoolean code

cfe08d3a53d191a31fe7ebd893433c439413f67e

Wolfsblvt <wolfsblvt@gmail.com>

1 files changed, +13 -38Ignore whitespace
public/scripts/variables.js+13 -38
@@ -518,8 +518,6 @@ export function parseBooleanOperands(args) {
518 * @returns {boolean} True if the rule yields true, false otherwise518 * @returns {boolean} True if the rule yields true, false otherwise
519 */519 */
520export function evalBoolean(rule, a, b) {520export function evalBoolean(rule, a, b) {
521 let result = false;
522
523 if (b === undefined && rule === 'eq') {521 if (b === undefined && rule === 'eq') {
524 // If right-hand side was not provided, whe just check if the left side is truthy522 // If right-hand side was not provided, whe just check if the left side is truthy
525 if (isTrueBoolean(String(a))) return true;523 if (isTrueBoolean(String(a))) return true;
@@ -537,65 +535,42 @@ export function evalBoolean(rule, a, b) {
537535
538 switch (rule) {536 switch (rule) {
539 case 'not':537 case 'not':
540 result = !aNumber;538 return !aNumber;
541 break;
542 case 'gt':539 case 'gt':
543 result = aNumber > bNumber;540 return aNumber > bNumber;
544 break;
545 case 'gte':541 case 'gte':
546 result = aNumber >= bNumber;542 return aNumber >= bNumber;
547 break;
548 case 'lt':543 case 'lt':
549 result = aNumber < bNumber;544 return aNumber < bNumber;
550 break;
551 case 'lte':545 case 'lte':
552 result = aNumber <= bNumber;546 return aNumber <= bNumber;
553 break;
554 case 'eq':547 case 'eq':
555 result = aNumber === bNumber;548 return aNumber === bNumber;
556 break;
557 case 'neq':549 case 'neq':
558 result = aNumber !== bNumber;550 return aNumber !== bNumber;
559 break;
560 default:551 default:
561 toastr.error('Unknown boolean comparison rule for type number.', 'Invalid command');552 toastr.error('Unknown boolean comparison rule for type number.', 'Invalid command');
562 throw new Error('Invalid command.');553 throw new Error('Invalid command.');
563 }554 }
564 } else {555 } else {
565 // otherwise do case-insensitive string comparsion, stringify non-strings556 // otherwise do case-insensitive string comparsion, stringify non-strings
566 let aString;557 let aString = (typeof a === 'string') ? a.toLowerCase() : JSON.stringify(a).toLowerCase();
567 let bString;558 let bString = (typeof b === 'string') ? b.toLowerCase() : JSON.stringify(b).toLowerCase();
568 if (typeof a == 'string') {
569 aString = a.toLowerCase();
570 } else {
571 aString = JSON.stringify(a).toLowerCase();
572 }
573 if (typeof b == 'string') {
574 bString = b.toLowerCase();
575 } else {
576 bString = JSON.stringify(b).toLowerCase();
577 }
578559
579 switch (rule) {560 switch (rule) {
580 case 'in':561 case 'in':
581 result = aString.includes(bString);562 return aString.includes(bString);
582 break;
583 case 'nin':563 case 'nin':
584 result = !aString.includes(bString);564 return !aString.includes(bString);
585 break;
586 case 'eq':565 case 'eq':
587 result = aString === bString;566 return aString === bString;
588 break;
589 case 'neq':567 case 'neq':
590 result = aString !== bString;568 return aString !== bString;
591 break;
592 default:569 default:
593 toastr.error('Unknown boolean comparison rule for type string.', 'Invalid /if command');570 toastr.error('Unknown boolean comparison rule for type string.', 'Invalid /if command');
594 throw new Error('Unknown boolean comparison rule for type string.');571 throw new Error('Unknown boolean comparison rule for type string.');
595 }572 }
596 }573 }
597
598 return result;
599}574}
600575
601/**576/**