@sudoo/marked
Version:
JavaScript & TypeScript code runner in JavaScript, safe with marked territory, asynchronous
63 lines (62 loc) • 2.4 kB
JavaScript
"use strict";
/**
* @author WMXPY
* @namespace Operation_BinaryExpression
* @description Operators
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.getBinaryOperation = void 0;
const error_code_1 = require("../../declare/error-code");
const error_1 = require("../../util/error/error");
const perform_1 = require("./perform");
const getBinaryOperation = (symbol) => {
switch (symbol) {
case "!=": return null;
case "!==": return (left, right) => {
return left !== right;
};
case "%": return (0, perform_1.createPerformBinaryExpressionOnNumber)((left, right) => {
return left % right;
});
case "&": return null;
case "*": return (0, perform_1.createPerformBinaryExpressionOnNumber)((left, right) => {
return left * right;
});
case "**": return null;
case "+": return (0, perform_1.createPerformBinaryExpressionOnNumberOrString)((left, right) => {
return left + right;
});
case "-": return (0, perform_1.createPerformBinaryExpressionOnNumber)((left, right) => {
return left - right;
});
case "/": return (0, perform_1.createPerformBinaryExpressionOnNumber)((left, right) => {
if (right === 0) {
throw (0, error_1.error)(error_code_1.ERROR_CODE.CANNOT_DIVIDE_BY_ZERO, symbol);
}
return left / right;
});
case "<": return (0, perform_1.createPerformBinaryExpressionOnNumber)((left, right) => {
return left < right;
});
case "<<": return null;
case "<=": return (0, perform_1.createPerformBinaryExpressionOnNumber)((left, right) => {
return left <= right;
});
case "==": return null;
case "===": return (left, right) => {
return left === right;
};
case ">": return (0, perform_1.createPerformBinaryExpressionOnNumber)((left, right) => {
return left > right;
});
case ">=": return (0, perform_1.createPerformBinaryExpressionOnNumber)((left, right) => {
return left >= right;
});
case ">>": return null;
case ">>>": return null;
case "^": return null;
case "|": return null;
}
return null;
};
exports.getBinaryOperation = getBinaryOperation;