Biblioteca completa para escrever números por extenso.
- Aceita números até duodecilhões.
- Aceita números negativos.
- Aceita números decimais.
- Aceita configuração de dialetos diferentes.
- Aceita configuração de genero (masculino/feminino).
- Aceita valores monetários (Reais, Euros, e está apto para +).
Instale-o com npm ou yarn:
- npm:
npm install extenso
. - yarn:
yarn add extenso
.
var extenso = require('extenso')
extenso(number, [options])
Obs.: Existência obrigatória.
- Tipo:
string
ounumber
O valor numérico que deverá ser escrito por extenso.
Se o valor for do tipo number
, então ele deve ser um número inteiro seguro,
ou seja, ele deve ser válido com Number.isSafeInteger()
. Porém, é altamente
recomendado que os números sejam passados dentro de strings devido ao fato
que, no JavaScript, números (do tipo number
) maiores que 9 quatrilhões
perdem valores, ou seja, são imprecisos (leia este artigo no Tableless para
mais informações).
Números envolvidos em strings deverão seguir o formato natural de escrita
de números na língua portuguesa. Você pode usar -
no início do número para
representar a negatividade, .
para representar a separção de milhares (isso
é só para semântica e não causa efeitos no retorno) e ,
para reprentar a
separação dos números inteiros e dos números decimais.
Observe que o uso do .
para separar milhares não é obrigatório, no entanto,
se você for usá-lo ele deve obedecer estritamente a regra de escrita, por
exemplo, 1.000.000
é um número válido que será aceito, mas 1.000000
retornará um erro.
Obs.: Existência opcional.
- Tipo:
object
Lista de opções válidas e o tipo do seu valor.
mode
- stringlocale
- stringnegative
- stringcurrency
- objectcurrency.type
- stringnumber
- objectnumber.gender
- stringnumber.decimal
- string
Define o modo de escrita do número.
Pode ser:
number
(valor padrão) - Para escrever números simples.currency
- Para escrever valores monetários.
extenso('42') // 'quarenta e dois'
extenso('42', { mode: 'number' }) // 'quarenta e dois'
extenso('42', { mode: 'currency' }) // 'quarenta e dois reais'
Define o modo de escrita do valor negativo.
formal
(valor padrão) - Para escrever o número no modo formal.informal
- Para escrever o número no modo informal.
extenso('42') // 'quarenta e dois negativo'
extenso('42', { negative: 'formal' }) // 'quarenta e dois negativo'
extenso('42', { negative: 'informal' }) // 'menos quarenta e dois'
Define a localização para o modo de escrita.
A escrita de alguns números pode váriar de país para país (e talvez até de região para região), por exemplo, o número 16 é escrito dezesseis no Brasil, enquanto que em Portugal é escrito dezasseis. A configuração dessas diferenças é feita aqui.
br
(valor padrão) - Para escrever no dialeto do Brasil.pt
- Para escrever no dialeto de Portugal.
extenso('16') // 'dezesseis'
extenso('16', { locale: 'br' }) // 'dezesseis'
extenso('16', { locale: 'pt' }) // 'dezasseis'
Define o código ISO da moeda em que o número deverá ser escrito.
BRL
(valor padrão) - Para escrever valores em Real (moeda brasileira).EUR
- Para escrever valores em Euro (moeda da maior parte da União Européia).ECV
- Para escrever valores em Escudo (moeda de Cabo Verde).
extenso('42', { mode: 'currency' }) // 'quarenta e dois reais'
extenso('42', { mode: 'currency', currency: { type: 'BRL' } }) // 'quarenta e dois reais'
extenso('42', { mode: 'currency', currency: { type: 'EUR' } }) // 'quarenta e dois euros'
extenso('42', { mode: 'currency', currency: { type: 'ECV' } }) // 'quarenta e dois escudos'
Define o gênero do número que será escrito.
Alguns números podem ser representados tanto no modo masculino quanto no modo feminino, por exemplo, 42 pode ser escrito como quarenta e dois ou 42 ou quarenta e duas.
m
(valor padrão) - Para escrever no modo masculino.f
- Para escrever no modo feminino.
extenso('42') // 'quarenta e dois'
extenso('42', { number: { gender: 'm' } }) // 'quarenta e dois'
extenso('42', { number: { gender: 'f' } }) // 'quarenta e duas'
Define o modo de escrita do valor decimal.
formal
(valor padrão) - Para escrever no modo formal.informal
- Para escrever no modo informal.
extenso('3.14') // 'três inteiros e quatorze centésimos'
extenso('3.14', { number: { decimal: 'formal' } }) // 'três inteiros e quatorze centésimos'
extenso('3.14', { number: { decimal: 'informal' } }) // 'três vírgula quatorze'
Oi, você é de Portugal, Angola, Moçambique ou qualquer outro país que usa fala português? Viu alguma escrita de números que é diferente no seu país? Então abra uma issue e vamos discutir como adaptar essas caracteristicas ao projeto para deixá-lo o mais completo possível.
Viu algum erro ou qualquer coisa que pode ser melhorada?
Você pode, portanto:
- Abrir uma issue.
- Enviar um pull request.
- Comentar no trecho do código que você acredita que pode ser melhorado.
Tendo em vista a participação de falantes da língua portuguesa, escreva:
- Nome de váriaveis, funções e outras coisas do tipo em inglês.
- Nome dos arquivos e diretórios em inglês.
- Issues, pull requests e comentários em português.
- Descrição dos testes em português.
- REGRA 1: Deve ter o formato: Deve(m) + verbo + descrição.
- REGRA 2: Nunca use ponto final na descrição.
- Mensagem de commits em português.
- REGRA 1: Inicie-os sempre em caixa alta.
- REGRA 2: Nunca use ponto final na descrição.
- Traduzir o
README.md
em inglês (README-en.md
).
Usa ou gosta desse e outros projetos mantindos por mim?
Você pode me ajudar com uma doação.
MIT © Matheus Alves