mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-05-26 12:55:16 -07:00
32 lines
958 B
TypeScript
32 lines
958 B
TypeScript
export function asFiniteNumber(
|
|
value: unknown,
|
|
fallback: number,
|
|
min?: number,
|
|
max?: number,
|
|
): number {
|
|
if (typeof value !== 'number' || !Number.isFinite(value)) return fallback;
|
|
if (min !== undefined && value < min) return min;
|
|
if (max !== undefined && value > max) return max;
|
|
return value;
|
|
}
|
|
|
|
export function asString(value: unknown, fallback: string): string {
|
|
if (typeof value !== 'string') return fallback;
|
|
const trimmed = value.trim();
|
|
return trimmed.length > 0 ? trimmed : fallback;
|
|
}
|
|
|
|
export function asBoolean(value: unknown, fallback: boolean): boolean {
|
|
if (typeof value === 'boolean') return value;
|
|
if (typeof value === 'string') {
|
|
const normalized = value.trim().toLowerCase();
|
|
if (normalized === 'yes' || normalized === 'true' || normalized === '1') {
|
|
return true;
|
|
}
|
|
if (normalized === 'no' || normalized === 'false' || normalized === '0') {
|
|
return false;
|
|
}
|
|
}
|
|
return fallback;
|
|
}
|