UNPKG

@technobuddha/library

Version:
43 lines 3.3 kB
import { numbering } from "./numbering.js"; import { empty, space } from "./unicode.js"; /** * Convert a number into text (the cardinal number) * @remarks There is no limit to the numbers that can be expressed, however Javascript/Typescript can only represent numbers * up to uncentillions (1e308). * @param input - The number * @param options - see {@link CardinalOptions} * @returns The number spelled out * @example * ```typescript * cardinal(123); // "one hundred twenty three" * cardinal(123, { hyphen: '-' }); // "one hundred twenty-three" * cardinal(42.5, { output: 'alphabetic' }); // "forty two and one half" * cardinal(101, { and: ' and ' }); // "one hundred and one" * cardinal(3.14159, { precision: 2 }); // "three and fourteen hundredths" * ``` * @group Math * @category Verbalization */ export function cardinal(input, options = {}) { const numberingOptions = { output: { integer: ((options?.output === 'alphabetic' || options?.output === 'numeric' || options?.output === 'hybrid') ? options.output : options.output?.integer) ?? 'alphabetic', fraction: (options?.output === 'alphabetic' || options?.output === 'numeric' ? options.output : options?.output === 'hybrid' ? 'alphabetic' : options.output?.fraction) ?? 'alphabetic', }, and: options?.and ?? empty, hyphen: options?.hyphen ?? space, tolerance: options?.tolerance ?? 0.01, denominators: options?.denominators ?? 'common', precision: options?.precision ?? 6, ordinal: options?.ordinal ?? false, shift: options?.shift ?? false, }; return numbering(input, numberingOptions); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZGluYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2FyZGluYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQXdENUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFhLEVBQUUsVUFBMkIsRUFBRTtJQUNuRSxNQUFNLGdCQUFnQixHQUFjO1FBQ2xDLE1BQU0sRUFBRTtZQUNOLE9BQU8sRUFDTCxDQUFDLENBQ0MsT0FBTyxFQUFFLE1BQU0sS0FBSyxZQUFZO2dCQUNoQyxPQUFPLEVBQUUsTUFBTSxLQUFLLFNBQVM7Z0JBQzdCLE9BQU8sRUFBRSxNQUFNLEtBQUssUUFBUSxDQUM3QixDQUFDLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLE1BQU07Z0JBQ2hCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLFlBQVk7WUFDNUMsUUFBUSxFQUNOLENBQUMsT0FBTyxFQUFFLE1BQU0sS0FBSyxZQUFZLElBQUksT0FBTyxFQUFFLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNO2dCQUNuRixDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVk7b0JBQzdDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLFlBQVk7U0FDOUM7UUFDRCxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxLQUFLO1FBQzFCLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxJQUFJLEtBQUs7UUFDaEMsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLElBQUksSUFBSTtRQUNyQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksSUFBSSxRQUFRO1FBQy9DLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLENBQUM7UUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksS0FBSztRQUNsQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssSUFBSSxLQUFLO0tBQy9CLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUM1QyxDQUFDIn0=