@eagleoutice/flowr-dev
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
41 lines • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TernaryLogic = exports.Ternary = void 0;
// diverging from boolean | maybe requires explicit handling
var Ternary;
(function (Ternary) {
Ternary["Always"] = "always";
Ternary["Maybe"] = "maybe";
Ternary["Never"] = "never";
})(Ternary || (exports.Ternary = Ternary = {}));
exports.TernaryLogic = {
name: 'Ternary',
negate(value) {
if (value === Ternary.Always) {
return Ternary.Never;
}
else if (value === Ternary.Never) {
return Ternary.Always;
}
return Ternary.Maybe;
},
or(...values) {
if (values.includes(Ternary.Always)) {
return Ternary.Always;
}
else if (values.includes(Ternary.Maybe)) {
return Ternary.Maybe;
}
return Ternary.Never;
},
and(...values) {
if (values.every(value => value === Ternary.Always)) {
return Ternary.Always;
}
else if (values.every(value => value === Ternary.Always || value === Ternary.Maybe)) {
return Ternary.Maybe;
}
return Ternary.Never;
}
};
//# sourceMappingURL=logic.js.map