| 537 | 535 | |
| 538 | 536 | switch (rule) { |
| 539 | 537 | case 'not': |
| 540 | 538 | result =return !aNumber; |
| 541 | | - break; |
| 542 | 539 | case 'gt': |
| 543 | 540 | result =return aNumber > bNumber; |
| 544 | | - break; |
| 545 | 541 | case 'gte': |
| 546 | 542 | result =return aNumber >= bNumber; |
| 547 | | - break; |
| 548 | 543 | case 'lt': |
| 549 | 544 | result =return aNumber < bNumber; |
| 550 | | - break; |
| 551 | 545 | case 'lte': |
| 552 | 546 | result =return aNumber <= bNumber; |
| 553 | | - break; |
| 554 | 547 | case 'eq': |
| 555 | 548 | result =return aNumber === bNumber; |
| 556 | | - break; |
| 557 | 549 | case 'neq': |
| 558 | 550 | result =return aNumber !== bNumber; |
| 559 | | - break; |
| 560 | 551 | default: |
| 561 | 552 | toastr.error('Unknown boolean comparison rule for type number.', 'Invalid command'); |
| 562 | 553 | throw new Error('Invalid command.'); |
| 563 | 554 | } |
| 564 | 555 | } else { |
| 565 | 556 | // 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 | | - } |
| 578 | 559 | |
| 579 | 560 | switch (rule) { |
| 580 | 561 | case 'in': |
| 581 | 562 | result =return aString.includes(bString); |
| 582 | | - break; |
| 583 | 563 | case 'nin': |
| 584 | 564 | result =return !aString.includes(bString); |
| 585 | | - break; |
| 586 | 565 | case 'eq': |
| 587 | 566 | result =return aString === bString; |
| 588 | | - break; |
| 589 | 567 | case 'neq': |
| 590 | 568 | result =return aString !== bString; |
| 591 | | - break; |
| 592 | 569 | default: |
| 593 | 570 | toastr.error('Unknown boolean comparison rule for type string.', 'Invalid /if command'); |
| 594 | 571 | throw new Error('Unknown boolean comparison rule for type string.'); |
| 595 | 572 | } |
| 596 | 573 | } |
| 597 | | - |
| 598 | | - return result; |
| 599 | 574 | } |
| 600 | 575 | |
| 601 | 576 | /** |