Add Parse.defaulted

This commit is contained in:
Endeavorance 2025-05-21 11:49:42 -04:00
parent 1baf20f6c0
commit 3252c741ec
3 changed files with 25 additions and 4 deletions

View file

@ -1,6 +1,6 @@
{
"name": "@endeavorance/parsec",
"version": "0.3.0",
"version": "0.4.0",
"author": "Endeavorance",
"type": "module",
"module": "dist/index.js",

View file

@ -223,6 +223,19 @@ export const Parse = {
};
},
defaulted<T>(
parser: (val: unknown) => T,
defaultVal: T,
): (val: unknown) => T {
return (val: unknown) => {
if (val === undefined || val === null) {
return defaultVal;
}
return parser(val);
};
},
oneOf<T extends Parser<unknown>[]>(
parsers: T,
shapeName = "Union",

View file

@ -176,6 +176,14 @@ describe(Parse.nullable, () => {
});
});
describe(Parse.defaulted, () => {
test("Parses uses a default value for undefined params", () => {
expect(Parse.defaulted(Parse.string, "default!")(undefined)).toBe(
"default!",
);
});
});
describe(Parse.nan, () => {
test("Parses NaN", () => {
expect(Parse.nan(Number.NaN)).toBe(Number.NaN);