UNPKG

@sudoo/marked

Version:

JavaScript & TypeScript code runner in JavaScript, safe with marked territory, asynchronous

63 lines (62 loc) 2.4 kB
"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;