@technobuddha/library
Version: 
A large library of useful functions
38 lines • 2.96 kB
JavaScript
import { empty, space } from "../unicode.js";
import { numbering } from "./numbering.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
 *
 * @group Math
 * @category Numbers
 */
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZGluYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbnVtYmVyaW5nL2NhcmRpbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDLE9BQU8sRUFBa0IsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUF5RDNEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBYSxFQUFFLFVBQTJCLEVBQUU7SUFDbkUsTUFBTSxnQkFBZ0IsR0FBYztRQUNsQyxNQUFNLEVBQUU7WUFDTixPQUFPLEVBQ0wsQ0FBQyxDQUNDLE9BQU8sRUFBRSxNQUFNLEtBQUssWUFBWTtnQkFDaEMsT0FBTyxFQUFFLE1BQU0sS0FBSyxTQUFTO2dCQUM3QixPQUFPLEVBQUUsTUFBTSxLQUFLLFFBQVEsQ0FDN0IsQ0FBQyxDQUFDO2dCQUNELE9BQU8sQ0FBQyxNQUFNO2dCQUNoQixDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxZQUFZO1lBQzVDLFFBQVEsRUFDTixDQUFDLE9BQU8sRUFBRSxNQUFNLEtBQUssWUFBWSxJQUFJLE9BQU8sRUFBRSxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTTtnQkFDbkYsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZO29CQUM3QyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxZQUFZO1NBQzlDO1FBQ0QsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksS0FBSztRQUMxQixNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxLQUFLO1FBQ2hDLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLElBQUk7UUFDckMsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLElBQUksUUFBUTtRQUMvQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsSUFBSSxDQUFDO1FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLEtBQUs7UUFDbEMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLElBQUksS0FBSztLQUMvQixDQUFDO0lBRUYsT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDNUMsQ0FBQyJ9