npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@ext-contabilidade/ex

v1.0.2

Published

Escrever números por extenso.

Downloads

399

Readme

@ext-contabilidade/ex

Números por extenso com JavaScript.

Características

  • [x] Números até duodecilhões.
  • [x] Números negativos.
  • [x] Números decimais.
  • [x] Valores monetários (BRL, EUR e mais).
  • [x] Preferências de dialetos (Brasil, Portugal e mais).
  • [x] Preferências de gênero.

Instalação

Instale-o com seu gerenciador preferido:

  • npm: npm install @ext-contabilidade/ex
  • Yarn: yarn add @ext-contabilidade/ex

Uso

var ex = require('@ext-contabilidade/ex')

Sintaxe

ex(number[, options])

number

Obs.: Parâmetro obrigatório.

  • Tipo: string ou number

O número que deverá ser escrito por extenso.

Se o valor for do tipo number, então ele deve ser um número com parte inteira segura, ou seja, o valor deve ser válido na verificação com Number.isSafeInteger(). No entanto, é muito recomendado que os números sejam encapsulados em string devivo ao fato que no JavaScript números (do tipo number) maiores que 9 quatrilhões perdem valores sendo imprecisos (experimente este artigo para mais informações [Tableless]).

Números envolvidos em strings deverão seguir o formato natural de escrita de números. Você poder usar - no início para representar números negativos e vírgula (,) ou ponto (.) para separação de milhares e decimais, onde por padrão segue-se o formato de escrita do Brasil podendo alterar as prefencias (como será visto no parâmetro number.decimalSeparator).

options

Obs.: Parâmetro opcional.

  • Tipo: object

Configurações opcionais de escrita.

  • mode (string)
  • locale (string)
  • negative (string)
  • currency (object)
  • currency.type (string)
  • number (object)
  • number.gender (string)
  • number.decimal (string)
  • number.decimalSeparator (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
ex('42') // 'quarenta e dois'
ex('42', { mode: 'number' }) // 'quarenta e dois'
ex('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
ex('-42') // 'quarenta e dois negativo'
ex('-42', { negative: 'formal' }) // 'quarenta e dois negativo'
ex('-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
ex('16') // 'dezesseis'
ex('16', { locale: 'br' }) // 'dezesseis'
ex('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
ex('42', { mode: 'currency' }) // 'quarenta e dois reais'
ex('42', { mode: 'currency', currency: { type: 'BRL' } }) // 'quarenta e dois reais'
ex('42', { mode: 'currency', currency: { type: 'EUR' } }) // 'quarenta e dois euros'
ex('42', { mode: 'currency', currency: { type: 'ECV' } }) // 'quarenta e dois escudos'
ex('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
ex('42') // 'quarenta e dois'
ex('42', { number: { gender: 'm' } }) // 'quarenta e dois'
ex('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
ex('3,14') // 'três inteiros e quatorze centésimos'
ex('3,14', { number: { decimal: 'formal' } }) // 'três inteiros e quatorze centésimos'
ex('3,14', { number: { decimal: 'informal' } }) // 'três vírgula quatorze'

number.decimalSeparator

Define o separador de inteiro e decimal.

  • comma (valor padrão) - Para usar vírgula como separador (ex. 3,14).
  • dot - Para usar ponto como separador (ex.: 3.14)
Observação

Quando o separador de decimal é o . (ponto) automaticamente o separador de milhar será o , (vírgula) e vice-versa.

Exemplo
ex('3,14')
ex('3,14', { number: { decimalSeparator: 'comma' } })
ex('3.14', { number: { decimalSeparator: 'dot' } })

// 'três inteiros e quatorze centésimos'

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

Licença

MIT © Matheus Alves