numero-por-extenso
Version:
Escreve números por extenso: normais, monetários e porcentagens.
38 lines (28 loc) • 1.19 kB
JavaScript
const common = require('../common'),
casasDecimais = require('../nomesExtenso/casasDecimais');
module.exports = porExtenso;
function porExtenso(numero) {
let numberStr = numero.toString().replace('-', '').split('.'),
numberBefore = numberStr[0] || 0,
numberAfter = numberStr[1];
let numberBeforeExtended = (numero < 0 ? 'menos ' : '') + common.numberInFull(numberBefore),
numberAfterExtended = '';
if (+numberAfter) {
numberAfter = numberAfter.replace(/0+$/g, '');
numberAfterExtended = ` vírgula ${common.numberInFull(numberAfter)}`;
let casaDecimal = descobreNomeCasaDecimal(numberAfter);
if (casaDecimal)
numberAfterExtended += ` ${casaDecimal}`;
}
return numberBeforeExtended + numberAfterExtended;
}
function descobreNomeCasaDecimal(numberAfter) {
let casaDecimal = casasDecimais[numberAfter.length - 1] || '';
// plural
if (casaDecimal && +numberAfter !== 1) {
casaDecimal = casaDecimal.split(' ');
casaDecimal[0] = casaDecimal[0] + 's';
casaDecimal = casaDecimal.join(' ');
}
return casaDecimal;
}