@eeue56/ts-core
Version:
Core library for TypeScript inspired by Elm
121 lines • 5.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.andThen = exports.map3 = exports.map2 = exports.map = exports.withDefault = exports.isNothing = exports.isJust = exports.Nothing = exports.Just = void 0;
/*
Create a Maybe with an actual value
*/
function Just(value) {
return {
kind: 'Just',
value: value,
};
}
exports.Just = Just;
/*
Create a Maybe with no value
*/
function Nothing() {
return {
kind: 'Nothing',
};
}
exports.Nothing = Nothing;
function isJust(maybe) {
switch (maybe.kind) {
case 'Just':
return true;
default:
return false;
}
}
exports.isJust = isJust;
function isNothing(maybe) {
switch (maybe.kind) {
case 'Nothing':
return true;
default:
return false;
}
}
exports.isNothing = isNothing;
/*
If a maybe has a value, return it.
Otherwise return the provided value
*/
function withDefault(value, maybeValue) {
switch (maybeValue.kind) {
case 'Just':
return maybeValue.value;
default:
return value;
}
}
exports.withDefault = withDefault;
/*
If a maybe has a value, apply a function to it and return a maybe containing the new value.
Otherwise return Nothing.
*/
function map(func, maybeValue) {
switch (maybeValue.kind) {
case 'Just':
return Just(func(maybeValue.value));
default:
return maybeValue;
}
}
exports.map = map;
/*
If both maybes have a value, apply a function to them and return a maybe containing the new value.
Otherwise return Nothing.
*/
function map2(func, firstMaybeValue, secondMaybeValue) {
switch (firstMaybeValue.kind) {
case 'Just':
switch (secondMaybeValue.kind) {
case 'Just':
return Just(func(firstMaybeValue.value, secondMaybeValue.value));
default:
return Nothing();
}
default:
return Nothing();
}
}
exports.map2 = map2;
/*
If all maybes have a value, apply a function to them and return a maybe containing the new value.
Otherwise return Nothing.
*/
function map3(func, firstMaybeValue, secondMaybeValue, thirdMaybeValue) {
switch (firstMaybeValue.kind) {
case 'Just':
switch (secondMaybeValue.kind) {
case 'Just':
switch (thirdMaybeValue.kind) {
case 'Just':
return Just(func(firstMaybeValue.value, secondMaybeValue.value, thirdMaybeValue.value));
default:
return Nothing();
}
default:
return Nothing();
}
default:
return Nothing();
}
}
exports.map3 = map3;
/*
If the maybe has a value, apply a function that turns things into a maybe to it.
Otherwise return Nothing.
*/
function andThen(func, maybeValue) {
switch (maybeValue.kind) {
case 'Just':
return func(maybeValue.value);
default:
return Nothing();
}
}
exports.andThen = andThen;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF5YmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21heWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVdBOztFQUVFO0FBQ0YsU0FBZ0IsSUFBSSxDQUFJLEtBQVE7SUFDNUIsT0FBTztRQUNILElBQUksRUFBRSxNQUFNO1FBQ1osS0FBSyxFQUFFLEtBQUs7S0FDZixDQUFDO0FBQ04sQ0FBQztBQUxELG9CQUtDO0FBRUQ7O0VBRUU7QUFDRixTQUFnQixPQUFPO0lBQ25CLE9BQU87UUFDSCxJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDO0FBQ04sQ0FBQztBQUpELDBCQUlDO0FBRUQsU0FBZ0IsTUFBTSxDQUFJLEtBQWU7SUFDckMsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1FBQ2hCLEtBQUssTUFBTTtZQUNQLE9BQU8sSUFBSSxDQUFDO1FBQ2hCO1lBQ0ksT0FBTyxLQUFLLENBQUM7S0FDcEI7QUFDTCxDQUFDO0FBUEQsd0JBT0M7QUFFRCxTQUFnQixTQUFTLENBQUksS0FBZTtJQUN4QyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7UUFDaEIsS0FBSyxTQUFTO1lBQ1YsT0FBTyxJQUFJLENBQUM7UUFDaEI7WUFDSSxPQUFPLEtBQUssQ0FBQztLQUNwQjtBQUNMLENBQUM7QUFQRCw4QkFPQztBQUVEOzs7RUFHRTtBQUNGLFNBQWdCLFdBQVcsQ0FBSSxLQUFRLEVBQUUsVUFBb0I7SUFDekQsUUFBUSxVQUFVLENBQUMsSUFBSSxFQUFFO1FBQ3JCLEtBQUssTUFBTTtZQUNQLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQztRQUU1QjtZQUNJLE9BQU8sS0FBSyxDQUFDO0tBQ3BCO0FBQ0wsQ0FBQztBQVJELGtDQVFDO0FBRUQ7OztFQUdFO0FBQ0YsU0FBZ0IsR0FBRyxDQUNmLElBQXVCLEVBQ3ZCLFVBQW9CO0lBRXBCLFFBQVEsVUFBVSxDQUFDLElBQUksRUFBRTtRQUNyQixLQUFLLE1BQU07WUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFeEM7WUFDSSxPQUFPLFVBQVUsQ0FBQztLQUN6QjtBQUNMLENBQUM7QUFYRCxrQkFXQztBQUVEOzs7RUFHRTtBQUNGLFNBQWdCLElBQUksQ0FDaEIsSUFBOEMsRUFDOUMsZUFBeUIsRUFDekIsZ0JBQTBCO0lBRTFCLFFBQVEsZUFBZSxDQUFDLElBQUksRUFBRTtRQUMxQixLQUFLLE1BQU07WUFDUCxRQUFRLGdCQUFnQixDQUFDLElBQUksRUFBRTtnQkFDM0IsS0FBSyxNQUFNO29CQUNQLE9BQU8sSUFBSSxDQUNQLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUN0RCxDQUFDO2dCQUVOO29CQUNJLE9BQU8sT0FBTyxFQUFFLENBQUM7YUFDeEI7UUFDTDtZQUNJLE9BQU8sT0FBTyxFQUFFLENBQUM7S0FDeEI7QUFDTCxDQUFDO0FBbkJELG9CQW1CQztBQUVEOzs7RUFHRTtBQUNGLFNBQWdCLElBQUksQ0FDaEIsSUFBNkQsRUFDN0QsZUFBeUIsRUFDekIsZ0JBQTBCLEVBQzFCLGVBQXlCO0lBRXpCLFFBQVEsZUFBZSxDQUFDLElBQUksRUFBRTtRQUMxQixLQUFLLE1BQU07WUFDUCxRQUFRLGdCQUFnQixDQUFDLElBQUksRUFBRTtnQkFDM0IsS0FBSyxNQUFNO29CQUNQLFFBQVEsZUFBZSxDQUFDLElBQUksRUFBRTt3QkFDMUIsS0FBSyxNQUFNOzRCQUNQLE9BQU8sSUFBSSxDQUNQLElBQUksQ0FDQSxlQUFlLENBQUMsS0FBSyxFQUNyQixnQkFBZ0IsQ0FBQyxLQUFLLEVBQ3RCLGVBQWUsQ0FBQyxLQUFLLENBQ3hCLENBQ0osQ0FBQzt3QkFFTjs0QkFDSSxPQUFPLE9BQU8sRUFBRSxDQUFDO3FCQUN4QjtnQkFFTDtvQkFDSSxPQUFPLE9BQU8sRUFBRSxDQUFDO2FBQ3hCO1FBQ0w7WUFDSSxPQUFPLE9BQU8sRUFBRSxDQUFDO0tBQ3hCO0FBQ0wsQ0FBQztBQTlCRCxvQkE4QkM7QUFFRDs7O0VBR0U7QUFDRixTQUFnQixPQUFPLENBQ25CLElBQWlDLEVBQ2pDLFVBQW9CO0lBRXBCLFFBQVEsVUFBVSxDQUFDLElBQUksRUFBRTtRQUNyQixLQUFLLE1BQU07WUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEM7WUFDSSxPQUFPLE9BQU8sRUFBRSxDQUFDO0tBQ3hCO0FBQ0wsQ0FBQztBQVhELDBCQVdDIn0=