@technobuddha/library
Version: 
A large library of useful functions
43 lines • 3.3 kB
JavaScript
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==