mirror of
https://github.com/fooflington/selfdefined.git
synced 2025-06-12 05:31:41 +00:00
77 lines
1.3 KiB
TypeScript
77 lines
1.3 KiB
TypeScript
export type Operator =
|
|
| '+'
|
|
| '-'
|
|
| '/'
|
|
| '%'
|
|
| '*'
|
|
| '**'
|
|
| '&'
|
|
| '|'
|
|
| '>>'
|
|
| '>>>'
|
|
| '<<'
|
|
| '^'
|
|
| '=='
|
|
| '==='
|
|
| '!='
|
|
| '!=='
|
|
| 'in'
|
|
| 'instanceof'
|
|
| '>'
|
|
| '<'
|
|
| '>='
|
|
| '<=';
|
|
|
|
export default function binaryOperation(
|
|
operator: Operator,
|
|
left: any,
|
|
right: any,
|
|
): any {
|
|
switch (operator) {
|
|
case '+':
|
|
return left + right;
|
|
case '-':
|
|
return left - right;
|
|
case '/':
|
|
return left / right;
|
|
case '%':
|
|
return left % right;
|
|
case '*':
|
|
return left * right;
|
|
case '**':
|
|
return left ** right;
|
|
case '&':
|
|
return left & right;
|
|
case '|':
|
|
return left | right;
|
|
case '>>':
|
|
return left >> right;
|
|
case '>>>':
|
|
return left >>> right;
|
|
case '<<':
|
|
return left << right;
|
|
case '^':
|
|
return left ^ right;
|
|
case '==':
|
|
return left == right;
|
|
case '===':
|
|
return left === right;
|
|
case '!=':
|
|
return left != right;
|
|
case '!==':
|
|
return left !== right;
|
|
case 'in':
|
|
return left in right;
|
|
case 'instanceof':
|
|
return left instanceof right;
|
|
case '>':
|
|
return left > right;
|
|
case '<':
|
|
return left < right;
|
|
case '>=':
|
|
return left >= right;
|
|
case '<=':
|
|
return left <= right;
|
|
}
|
|
}
|