Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | 7x 7x 6x 6x 5x 7x 6x 1x 5x 3x 3x 2x 1x 1x 7x 9x 3x 6x 3x 3x 3x 2x 1x | import { isNumber, isString } from './index'; /** * Parses date and if success returns Date object otherwise returns undefined * @description * If for example we want parse data new Date("asd") this will be invalid date and javascript will not return exception. So for every date parsing we need to do additional validity checks * @param data - Anything * @example * P.toFloat("1.378998") // = 1.378998 * P.toFloat("test") // undefined * P.toFloat("test", 0) // 0 * @category Number */ export function toDate(data: string | number | Date): Date | undefined; export function toDate(data: string | number | Date, defaultValue: Date): Date; export function toDate( data: string | number | Date, defaultValue?: Date ): Date | undefined { const parsed = new Date(data); if (isNaN(parsed.getTime())) return defaultValue; return parsed; } /** * Parses string to `floating` number * @description * This function litle bit different than parseFloat. First of all it can return undefined if float parsing is unsuccessful. * Regular parseFloat return `NaN` this is really misleading * @param data - Anything * @example * P.toFloat("1.378998") // = 1.378998 * P.toFloat("test") // undefined * P.toFloat("test", 0) // 0 * @category Number */ export function toFloat(data: unknown): number | undefined; export function toFloat<T extends number>( data: unknown, defaultValue: T ): number; // eslint-disable-next-line @typescript-eslint/no-explicit-any export function toFloat(data: unknown, defaultValue?: number): any { if (isNumber(data)) { return data; } if (isString(data)) { const parsedString = parseFloat(data); return !isNaN(parsedString) ? parsedString : isNumber(defaultValue) ? defaultValue : undefined; } if (isNumber(defaultValue)) { return defaultValue; } return; } /** * Parses string to `int` number * @description * This function litle bit different than parseInt. First of all it can return undefined if int parsing is unsuccessful. * Regular parseInt cant return `NaN` and this is really misleading * @param data - Anything * @example * P.toInt("1.378998") // = 1 * P.toInt("test") // undefined * P.toInt("test", 0) // 0 * @category Number */ export function toInt(data: unknown): number | undefined; export function toInt<T extends number>(data: unknown, defaultValue: T): number; // eslint-disable-next-line @typescript-eslint/no-explicit-any export function toInt(data: unknown, defaultValue?: number): any { if (isNumber(data)) { return parseInt(`${data}`, 10); } if (isString(data)) { const parsedString = parseInt(data, 10); return !isNaN(parsedString) ? parsedString : isNumber(defaultValue) ? defaultValue : undefined; } if (isNumber(defaultValue)) { return toInt(defaultValue); } return; } |