mirror of
				https://github.com/SillyTavern/SillyTavern.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	Refactor evalBoolean code
This commit is contained in:
		| @@ -518,8 +518,6 @@ export function parseBooleanOperands(args) { | |||||||
|  * @returns {boolean} True if the rule yields true, false otherwise |  * @returns {boolean} True if the rule yields true, false otherwise | ||||||
|  */ |  */ | ||||||
| export function evalBoolean(rule, a, b) { | export function evalBoolean(rule, a, b) { | ||||||
|     let result = false; |  | ||||||
|  |  | ||||||
|     if (b === undefined && rule === 'eq') { |     if (b === undefined && rule === 'eq') { | ||||||
|         // If right-hand side was not provided, whe just check if the left side is truthy |         // If right-hand side was not provided, whe just check if the left side is truthy | ||||||
|         if (isTrueBoolean(String(a))) return true; |         if (isTrueBoolean(String(a))) return true; | ||||||
| @@ -537,65 +535,42 @@ export function evalBoolean(rule, a, b) { | |||||||
|  |  | ||||||
|         switch (rule) { |         switch (rule) { | ||||||
|             case 'not': |             case 'not': | ||||||
|                 result = !aNumber; |                 return !aNumber; | ||||||
|                 break; |  | ||||||
|             case 'gt': |             case 'gt': | ||||||
|                 result = aNumber > bNumber; |                 return aNumber > bNumber; | ||||||
|                 break; |  | ||||||
|             case 'gte': |             case 'gte': | ||||||
|                 result = aNumber >= bNumber; |                 return aNumber >= bNumber; | ||||||
|                 break; |  | ||||||
|             case 'lt': |             case 'lt': | ||||||
|                 result = aNumber < bNumber; |                 return aNumber < bNumber; | ||||||
|                 break; |  | ||||||
|             case 'lte': |             case 'lte': | ||||||
|                 result = aNumber <= bNumber; |                 return aNumber <= bNumber; | ||||||
|                 break; |  | ||||||
|             case 'eq': |             case 'eq': | ||||||
|                 result = aNumber === bNumber; |                 return aNumber === bNumber; | ||||||
|                 break; |  | ||||||
|             case 'neq': |             case 'neq': | ||||||
|                 result = aNumber !== bNumber; |                 return aNumber !== bNumber; | ||||||
|                 break; |  | ||||||
|             default: |             default: | ||||||
|                 toastr.error('Unknown boolean comparison rule for type number.', 'Invalid command'); |                 toastr.error('Unknown boolean comparison rule for type number.', 'Invalid command'); | ||||||
|                 throw new Error('Invalid command.'); |                 throw new Error('Invalid command.'); | ||||||
|         } |         } | ||||||
|     } else { |     } else { | ||||||
|         // otherwise do case-insensitive string comparsion, stringify non-strings |         // otherwise do case-insensitive string comparsion, stringify non-strings | ||||||
|         let aString; |         let aString = (typeof a === 'string') ? a.toLowerCase() : JSON.stringify(a).toLowerCase(); | ||||||
|         let bString; |         let bString = (typeof b === 'string') ? b.toLowerCase() : JSON.stringify(b).toLowerCase(); | ||||||
|         if (typeof a == 'string') { |  | ||||||
|             aString = a.toLowerCase(); |  | ||||||
|         } else { |  | ||||||
|             aString = JSON.stringify(a).toLowerCase(); |  | ||||||
|         } |  | ||||||
|         if (typeof b == 'string') { |  | ||||||
|             bString = b.toLowerCase(); |  | ||||||
|         } else { |  | ||||||
|             bString = JSON.stringify(b).toLowerCase(); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         switch (rule) { |         switch (rule) { | ||||||
|             case 'in': |             case 'in': | ||||||
|                 result = aString.includes(bString); |                 return aString.includes(bString); | ||||||
|                 break; |  | ||||||
|             case 'nin': |             case 'nin': | ||||||
|                 result = !aString.includes(bString); |                 return !aString.includes(bString); | ||||||
|                 break; |  | ||||||
|             case 'eq': |             case 'eq': | ||||||
|                 result = aString === bString; |                 return aString === bString; | ||||||
|                 break; |  | ||||||
|             case 'neq': |             case 'neq': | ||||||
|                 result = aString !== bString; |                 return aString !== bString; | ||||||
|                 break; |  | ||||||
|             default: |             default: | ||||||
|                 toastr.error('Unknown boolean comparison rule for type string.', 'Invalid /if command'); |                 toastr.error('Unknown boolean comparison rule for type string.', 'Invalid /if command'); | ||||||
|                 throw new Error('Unknown boolean comparison rule for type string.'); |                 throw new Error('Unknown boolean comparison rule for type string.'); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     return result; |  | ||||||
| } | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user