@monstermann/fn
Version:
A utility library for TypeScript.
32 lines (30 loc) • 745 B
JavaScript
import { dfdlT } from "@monstermann/dfdl";
//#region src/string/parseFloatOrElse.ts
/**
* `parseFloatOrElse(target, orElse)`
*
* Parses `target` string and returns a floating point number, or the result of calling `orElse` function with `target` if parsing fails.
*
* ```ts
* parseFloatOrElse("3.14", () => 0); // 3.14
* parseFloatOrElse("abc", (str) => str.length); // 3
* ```
*
* ```ts
* pipe(
* "3.14",
* parseFloatOrElse(() => 0),
* ); // 3.14
*
* pipe(
* "abc",
* parseFloatOrElse((str) => str.length),
* ); // 3
* ```
*/
const parseFloatOrElse = dfdlT((target, orElse) => {
const value = Number.parseFloat(target);
return Number.isFinite(value) ? value : orElse(target);
}, 2);
//#endregion
export { parseFloatOrElse };