Code Monkey home page Code Monkey logo

extenso.js's Introduction

Extenso.js

Status Doar

Biblioteca completa para escrever números por extenso.

Características

  • 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 +).

Instalação

Instale-o com npm ou yarn:

  • npm: npm install extenso.
  • yarn: yarn add extenso.

Uso

var extenso = require('extenso')

Sintaxe

extenso(number, [options])

number

Obs.: Existência obrigatória.

  • Tipo: string ou number

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.

options

Obs.: Existência opcional.

  • Tipo: object

Lista de opções válidas e o tipo do seu valor.

  • mode - string
  • locale - string
  • negative - string
  • currency - object
  • currency.type - string
  • number - object
  • number.gender - string
  • number.decimal - string

mode

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.
Exemplo
extenso('42') // 'quarenta e dois'
extenso('42', { mode: 'number' }) // 'quarenta e dois'
extenso('42', { mode: 'currency' }) // 'quarenta e dois reais'

negative

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.
Exemplo
extenso('42') // 'quarenta e dois negativo'
extenso('42', { negative: 'formal' }) // 'quarenta e dois negativo'
extenso('42', { negative: 'informal' }) // 'menos quarenta e dois'

locale

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.
Exemplo
extenso('16') // 'dezesseis'
extenso('16', { locale: 'br' }) // 'dezesseis'
extenso('16', { locale: 'pt' }) // 'dezasseis'

currency.type

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).
Exemplo
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'
extenso('42', { mode: 'currency', currency: { type: 'MZN' } }) // 'quarenta e dois meticais'

number.gender

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.
Exemplo
extenso('42') // 'quarenta e dois'
extenso('42', { number: { gender: 'm' } }) // 'quarenta e dois'
extenso('42', { number: { gender: 'f' } }) // 'quarenta e duas'

number.decimal

Define o modo de escrita do valor decimal.

  • formal (valor padrão) - Para escrever no modo formal.
  • informal - Para escrever no modo informal.
Exemplo
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'

Contribuição

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.

Regras

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.

TODO

  • Traduzir o README.md em inglês (README-en.md).

Ajuda-me

Usa ou gosta desse e outros projetos mantindos por mim?

Você pode me ajudar com uma doação.

Link para doar

Licença

MIT © Matheus Alves

extenso.js's People

Contributors

theuves avatar osvaldom avatar guesant avatar dependabot[bot] avatar caiocsdev avatar israelst avatar natalio avatar renancouto avatar

Watchers

James Cloos avatar

Forkers

epmatimbe

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.