superfly-timeline
Version:
Resolver for defining objects with temporal boolean logic relationships on a timeline
73 lines • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Operator = void 0;
const lib_1 = require("./lib");
const reference_1 = require("./reference");
/** Helper class for various math operators, used in expressions */
class Operator {
static get(operator) {
switch (operator) {
case '+':
return Operator.Add;
case '-':
return Operator.Subtract;
case '*':
return Operator.Multiply;
case '/':
return Operator.Divide;
case '%':
return Operator.Modulo;
default: {
/* istanbul ignore next */
(0, lib_1.assertNever)(operator);
/* istanbul ignore next */
return Operator.Null;
}
}
}
}
exports.Operator = Operator;
Operator.Add = (a, b) => {
if (a === null || b === null)
return null;
return {
value: a.value + b.value,
references: (0, reference_1.joinReferences)(a.references, b.references),
};
};
Operator.Subtract = (a, b) => {
if (a === null || b === null)
return null;
return {
value: a.value - b.value,
references: (0, reference_1.joinReferences)(a.references, b.references),
};
};
Operator.Multiply = (a, b) => {
if (a === null || b === null)
return null;
return {
value: a.value * b.value,
references: (0, reference_1.joinReferences)(a.references, b.references),
};
};
Operator.Divide = (a, b) => {
if (a === null || b === null)
return null;
return {
value: a.value / b.value,
references: (0, reference_1.joinReferences)(a.references, b.references),
};
};
Operator.Modulo = (a, b) => {
if (a === null || b === null)
return null;
return {
value: a.value % b.value,
references: (0, reference_1.joinReferences)(a.references, b.references),
};
};
Operator.Null = () => {
return null;
};
//# sourceMappingURL=operator.js.map