Add Parse.defaulted
This commit is contained in:
parent
1baf20f6c0
commit
3252c741ec
3 changed files with 25 additions and 4 deletions
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@endeavorance/parsec",
|
"name": "@endeavorance/parsec",
|
||||||
"version": "0.3.0",
|
"version": "0.4.0",
|
||||||
"author": "Endeavorance",
|
"author": "Endeavorance",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"module": "dist/index.js",
|
"module": "dist/index.js",
|
||||||
|
|
13
src/index.ts
13
src/index.ts
|
@ -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>[]>(
|
oneOf<T extends Parser<unknown>[]>(
|
||||||
parsers: T,
|
parsers: T,
|
||||||
shapeName = "Union",
|
shapeName = "Union",
|
||||||
|
|
|
@ -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, () => {
|
describe(Parse.nan, () => {
|
||||||
test("Parses NaN", () => {
|
test("Parses NaN", () => {
|
||||||
expect(Parse.nan(Number.NaN)).toBe(Number.NaN);
|
expect(Parse.nan(Number.NaN)).toBe(Number.NaN);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue