UNPKG

@sudoo/marked

Version:

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

46 lines (45 loc) 2.29 kB
"use strict"; /** * @author WMXPY * @namespace Operation_BinaryExpression * @description Perform */ Object.defineProperty(exports, "__esModule", { value: true }); exports.performBinaryExpressionOnNumber = exports.createPerformBinaryExpressionOnNumber = exports.performBinaryExpressionOnNumberOrString = exports.createPerformBinaryExpressionOnNumberOrString = void 0; const error_code_1 = require("../../declare/error-code"); const error_1 = require("../../util/error/error"); const bigint_1 = require("../../variable/sand-literal/bigint"); const createPerformBinaryExpressionOnNumberOrString = (action) => { return (left, right) => { return (0, exports.performBinaryExpressionOnNumberOrString)(left, right, action); }; }; exports.createPerformBinaryExpressionOnNumberOrString = createPerformBinaryExpressionOnNumberOrString; const performBinaryExpressionOnNumberOrString = (left, right, action) => { if (left instanceof bigint_1.SandLiteralBigInt || right instanceof bigint_1.SandLiteralBigInt) { const result = action(bigint_1.SandLiteralBigInt.resolve(left), bigint_1.SandLiteralBigInt.resolve(right)); return bigint_1.SandLiteralBigInt.create(result.toString()); } return action(left, right); }; exports.performBinaryExpressionOnNumberOrString = performBinaryExpressionOnNumberOrString; const createPerformBinaryExpressionOnNumber = (action) => { return (left, right) => { return (0, exports.performBinaryExpressionOnNumber)(left, right, action); }; }; exports.createPerformBinaryExpressionOnNumber = createPerformBinaryExpressionOnNumber; const performBinaryExpressionOnNumber = (left, right, action) => { if (left instanceof bigint_1.SandLiteralBigInt || right instanceof bigint_1.SandLiteralBigInt) { const result = action(bigint_1.SandLiteralBigInt.resolve(left), bigint_1.SandLiteralBigInt.resolve(right)); return bigint_1.SandLiteralBigInt.create(result.toString()); } if (typeof left !== "number" || typeof right !== "number") { throw (0, error_1.error)(error_code_1.ERROR_CODE.CANNOT_PERFORM_ACTION_ON_NON_NUMBER, `${left} & ${right}`); } return action(left, right); }; exports.performBinaryExpressionOnNumber = performBinaryExpressionOnNumber;