UNPKG

@technobuddha/library

Version:
43 lines 3.3 kB
import { cardinalOnes, cardinalTens } from "../constants.js"; import { space } from "../unicode.js"; const ZERO = 0; const TEN = 10; const TWENTY = 20; const ONE_HUNDRED = 100; /** * Converts a number less than 1000 into its English words representation as an array of strings. * @param input - The number to convert (should be in the range 0 to 999). * @param options - An object specifying formatting options: * - and: A string to insert between hundreds and the remainder (e.g., "and" in "one hundred and one"). * - hyphen: A string to use as a hyphen between tens and ones (defaults to a space). * @returns An array of strings representing the number in words. * @example * ```typescript * hundreds(342, \{ and: "and", hyphen: "-" \}); // ["three", "hundred", "and", "forty-two"] * ``` * @internal */ export function hundreds(input, { and, hyphen = space }) { let numInput = input; const words = []; if (numInput >= ONE_HUNDRED) { words.push(cardinalOnes[Math.floor(numInput / ONE_HUNDRED)], 'hundred'); numInput %= ONE_HUNDRED; if (and && numInput > ZERO) { words.push(and); } } if (numInput > ZERO) { if (numInput < TWENTY) { words.push(cardinalOnes[numInput]); } else if (numInput % TEN === ZERO) { words.push(cardinalTens[Math.floor(numInput / TEN) - 2]); } else { words.push(cardinalTens[Math.floor(numInput / TEN) - 2] + hyphen + cardinalOnes[numInput % TEN]); } } return words; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVuZHJlZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbnVtYmVyaW5nL2h1bmRyZWRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl0QyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUM7QUFDZixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDZixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDbEIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBRXhCOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBYSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQWE7SUFDeEUsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLE1BQU0sS0FBSyxHQUFHLEVBQWMsQ0FBQztJQUU3QixJQUFJLFFBQVEsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hFLFFBQVEsSUFBSSxXQUFXLENBQUM7UUFDeEIsSUFBSSxHQUFHLElBQUksUUFBUSxHQUFHLElBQUksRUFBRSxDQUFDO1lBQzNCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUNwQixJQUFJLFFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxJQUFJLFFBQVEsR0FBRyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssQ0FBQyxJQUFJLENBQ1IsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxZQUFZLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUNyRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMifQ==