typescript-functional-extensions
Version:
A TypeScript implementation of synchronous and asynchronous Maybe and Result monads
60 lines (59 loc) • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.emptyStringAsNone = emptyStringAsNone;
exports.emptyOrWhiteSpaceStringAsNone = emptyOrWhiteSpaceStringAsNone;
exports.zeroAsNone = zeroAsNone;
const maybe_js_1 = require("./maybe.js");
const utilities_js_1 = require("./utilities.js");
/**
* Converts string, null, or undefined values into a Maybe<string>. Throws an error for defined, non-string values.
* @param value
* @returns Maybe.some when value is defined and non-empty, Maybe.none otherwise.
*/
function emptyStringAsNone(value) {
if (!(0, utilities_js_1.isDefined)(value)) {
return maybe_js_1.Maybe.none();
}
if (typeof value !== 'string') {
throw Error('Value must be a string');
}
if (value === '') {
return maybe_js_1.Maybe.none();
}
return maybe_js_1.Maybe.some(value);
}
const whiteSpaceRegex = /^\s*$/g;
/**
* Converts string, null, or undefined values into a Maybe<string>. Throws an error for defined, non-string values.
* @param value
* @returns Maybe.some when value is defined, non-empty, and non-whitespace, Maybe.none otherwise.
*/
function emptyOrWhiteSpaceStringAsNone(value) {
if (!(0, utilities_js_1.isDefined)(value)) {
return maybe_js_1.Maybe.none();
}
if (typeof value !== 'string') {
throw Error('Value must be a string');
}
if (whiteSpaceRegex.test(value)) {
return maybe_js_1.Maybe.none();
}
return maybe_js_1.Maybe.some(value);
}
/**
* Converts number, null, or undefined values into a Maybe<number>. Throws an error for defined, non-number values.
* @param value
* @returns Maybe.some when value is defined and non-zero, Maybe.none otherwise.
*/
function zeroAsNone(value) {
if (!(0, utilities_js_1.isDefined)(value)) {
return maybe_js_1.Maybe.none();
}
if (typeof value !== 'number') {
throw Error('Value must be a number');
}
if (value === 0) {
return maybe_js_1.Maybe.none();
}
return maybe_js_1.Maybe.some(value);
}