UNPKG

@devix-tecnologia/numero-por-extenso

Version:

Escreve números por extenso: normais, monetários e porcentagens.

43 lines 1.98 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = porExtenso; const common_js_1 = require("../common.js"); const casasDecimais_js_1 = __importDefault(require("../nomesExtenso/casasDecimais.js")); /** * Converte um número para sua representação por extenso, incluindo casas decimais nomeadas. * * @param numero O número (como número ou string) a ser convertido para extenso. * @returns A representação por extenso do valor, com o nome das casas decimais. */ function porExtenso(numero) { let numberStr = numero.toString().replace("-", "").split("."), numberBefore = numberStr[0] || "0", numberAfter = numberStr[1] || ""; let numberBeforeExtended = (numero < 0 ? "menos " : "") + (0, common_js_1.numberInFull)(Number(numberBefore)), numberAfterExtended = ""; if (parseInt(numberAfter)) { numberAfter = numberAfter.replace(/0+$/g, ""); // Remove trailing zeros numberAfterExtended = ` vírgula ${(0, common_js_1.numberInFull)(+numberAfter)}`; let casaDecimal = descobreNomeCasaDecimal(numberAfter); if (casaDecimal) numberAfterExtended += ` ${casaDecimal}`; } return numberBeforeExtended + numberAfterExtended; } /** * Determina o nome da casa decimal com base no número de dígitos após a vírgula. * * @param numberAfter A parte decimal do número como string. * @returns O nome apropriado da casa decimal, ajustado para singular ou plural. */ function descobreNomeCasaDecimal(numberAfter) { let casaDecimal = casasDecimais_js_1.default[numberAfter.length - 1] || ""; // plural if (casaDecimal && parseInt(numberAfter) !== 1) { let aux = casaDecimal.split(" "); aux[0] = aux[0] + "s"; casaDecimal = aux.join(" "); } return casaDecimal; } //# sourceMappingURL=normal.js.map