UNPKG

@abaplint/runtime

Version:
40 lines 2.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.multiply = multiply; const types_1 = require("../types"); const _parse_1 = require("./_parse"); const string_1 = require("../types/string"); function multiply(left, right) { if (left instanceof types_1.Integer8 || right instanceof types_1.Integer8) { const l = left instanceof types_1.Integer8 ? left.get() : BigInt((0, _parse_1.parse)(left)); const r = right instanceof types_1.Integer8 ? right.get() : BigInt((0, _parse_1.parse)(right)); return new types_1.Integer8().set(l * r); } else if (left instanceof types_1.Integer && right instanceof types_1.Integer) { const val = left.get() * right.get(); return new types_1.Integer().set(val); } else if (typeof left === "number" && typeof right === "number" && Number.isInteger(left) && Number.isInteger(right)) { const val = left * right; return new types_1.Integer().set(val); } else if (typeof left === "number" && Number.isInteger(left) && right instanceof types_1.Integer) { const val = left * right.get(); return new types_1.Integer().set(val); } else if (typeof right === "number" && Number.isInteger(right) && left instanceof types_1.Integer) { const val = left.get() * right; return new types_1.Integer().set(val); } else if ((left instanceof string_1.String || left instanceof types_1.Character) && Number.isInteger(Number(left.get())) && right instanceof types_1.Integer) { const val = Number.parseInt(left.get(), 10) * right.get(); return new types_1.Integer().set(val); } else if ((right instanceof string_1.String || right instanceof types_1.Character) && Number.isInteger(Number(right)) && left instanceof types_1.Integer) { const val = left.get() * Number.parseInt(right.get(), 10); return new types_1.Integer().set(val); } return new types_1.Float().set((0, _parse_1.parse)(left) * (0, _parse_1.parse)(right)); } //# sourceMappingURL=multiply.js.map