| 537 | | 535 | |
| 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-strings | 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 | 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 | } |
| 600 | | 575 | |
| 601 | /** | 576 | /** |